Executing the url "http://127.0.0.1:8000/admin"; gives me a Template
error with the problem area being: {% url django-admindocs-docroot as
docsroot %}
(the actual error dump is at the bottom of this explanation.)

/Volumes/Data1/Caster/gallery/items/urls.py causes the problem: (See
it below)
The problem goes away if I comment out the 4th URL pattern.

To solve the problem I was referred to: 
http://code.djangoproject.com/ticket/9941#comment:1

It recommends to add the following to url config, so that {% url
django-admindocs-docroot as docroot %} wouldn't fail in the admin:
(r'^admin/doc/', include('django.contrib.admindocs.urls')),

I have three URL Confs. I added it to each in turn but the problem
wasn't solved.

Here is my project layout:

/Volumes/Data1/Caster/gallery/                   Dango project
urls.py
real_urls.py
settings.py

/Volumes/Data1/Caster/gallery/items
/Volumes/Data1/Caster/gallery/media
/Volumes/Data1/Caster/gallery/db
/Volumes/Data1/Caster/gallery/templates
/Volumes/Data1/Caster/gallery/amedia

/Volumes/Data1/Caster/gallery/items/        Dango app
urls.py
models.py
fields.py

/Volumes/Data1/Caster/gallery/settings.py

# Django settings for gallery project.

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    ('TokyoDan', 'tokyod...@gmail.com'),
)

MANAGERS = ADMINS

DATABASE_ENGINE = 'sqlite3'    # 'postgresql_psycopg2', 'postgresql',
'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'db/gallery_db'     # Or path to database file if
using sqlite3.
DATABASE_USER = ''             # Not used with sqlite3.
DATABASE_PASSWORD = ''         # Not used with sqlite3.
DATABASE_HOST = ''             # Set to empty string for localhost.
Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not
used with sqlite3.

TIME_ZONE = 'Asia/Tokyo'

LANGUAGE_CODE = 'en-us'
SITE_ID = 1
USE_I18N = True

MEDIA_ROOT = ''
ROOT_URL = 'http://127.0.0.1:8000'
MEDIA_URL = 'http://127.0.0.1:8000/'

ADMIN_MEDIA_PREFIX = '/amedia/'

SECRET_KEY = 'g!*j(9^kp3%=...@c_cp%6cq8gc#k3l2@lee(rhs&g!w!)t6jd'

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.load_template_source',
    'django.template.loaders.app_directories.load_template_source',
#     'django.template.loaders.eggs.load_template_source',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
)

ROOT_URLCONF = 'gallery.urls'

TEMPLATE_DIRS = (
    '/templates/'
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.admin',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'gallery.items',
)


/Volumes/Data1/Caster/gallery/urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'', include('gallery.real_urls')),
)


/Volumes/Data1/Caster/gallery/real_urls.py

from django.conf.urls.defaults import *
from django.contrib import *
admin.autodiscover()

urlpatterns = patterns('',
    (r'^admin/(.*)', admin.site.root),
    (r'^', include('gallery.items.urls')),
)


/Volumes/Data1/Caster/gallery/items/urls.py

from django.conf.urls.defaults import *
from gallery.items.models import Item, Photo

urlpatterns = patterns('django.views.generic',
    url(r'^$', 'simple.direct_to_template',
        kwargs={
            'template': 'index.html',
            'extra_content': {'item_list': lambda: Item.objects.all()}
        },
        name='index'
    ),
    url(r'^items/$', 'list_detail.object_list',
        kwargs={
            'queryset': Item.objects.all(),
            'template_name': 'items_list.html',
            'allow_empty': True
        },
        name='item_list'
    ),
    url(r'^items/(?P<object_id>\d+)/$', 'list_detail.object_detail',
        kwargs={
            'queryset': Item.objects.all(),
            'template_name': 'items_detail.html'
        },
        name='item_detail'
    ),
#
# Uncommenting the lines below cause the problem:
#    url(r'^photos/(?P<object.id>\d+)/$', 'list_detail.object_detail',
#        kwargs={
#            'queryset': Photo.objects.all(),
#            'template_name': 'photos_detail.html'
#        },
#        name='photo_detail'
#    ),
)


/Volumes/Data1/Caster/gallery/items/models.py

from django.db import models
from django.contrib import admin
from django.db.models import permalink
from gallery.items.fields import ThumbnailImageField


class Item(models.Model):
    name = models.CharField(max_length=250)
    description = models.TextField()

    class Meta:
       ordering = ['name']

    def __unicode__(self):
        return self.name

    @permalink
    def get_absolute_url(self):
        return ('item_detail', None, {'object_id': self.id})

class Photo(models.Model):
    item = models.ForeignKey(Item)
    title = models.CharField(max_length=100)
#    image = models.ImageField(upload_to='media')
    image = ThumbnailImageField(upload_to='media')

    caption = models.CharField(max_length=250, blank=True)

    class Meta:
        ordering = ['title']

    def __unicode__(self):
        return self.title

    @permalink
    def get_absolute_url(self):
        return ('photo_detail', None, {'object_id': self.id})

class PhotoInLine(admin.StackedInline):
    model = Photo

class ItemAdmin(admin.ModelAdmin):
    inlines = [PhotoInLine]

admin.site.register(Item, ItemAdmin)
admin.site.register(Photo)


/Volumes/Data1/Caster/gallery/items/fields.py

from django.db.models.fields.files import ImageField, ImageFieldFile
from PIL import Image
import os

def _add_thumb(s):
    parts = s.split(".")
    parts.insert(-1, "thumb")
    if parts[-1].lower() not in ['jpeg', 'jpg']:
        parts[-1] = 'jpg'
    return ".".join(parts)

class ThumbnailImageFieldFile(ImageFieldFile):
    def _get_thumb_path(self):
        return _add_thumb(self.path)
    thumb_path = property(_get_thumb_path)

    def _get_thumb_url(self):
        return _add_thumb(self.url)
    thumb_url = property(_get_thumb_url)

    def save(self, name, content, save=True):
        super(ThumbnailImageFieldFile, self).save(name, content, save)
        img = Image.open(self.path)
        img.thumbnail(
            (self.field.thumb_width, self.field.thumb_height),
            Image.ANTIALIAS
        )
        img.save(self.thumb_path, 'JPEG')

    def delete(self, save=True):
        if os.path.exists(self.thumb_path):
            os.remove(self.thumb_path)
        super(ThumbnailImageFieldFile, self).delete(save)


class ThumbnailImageField(ImageField):
    attr_class = ThumbnailImageFieldFile

    def __init__(self, thumb_width=128, thumb_height=128, *args,
**kwargs):
        self.thumb_width = thumb_width
        self.thumb_height = thumb_height
        super(ThumbnailImageField, self).__init__(*args, **kwargs)


------------- ERROR ------------------------------
Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/admin/
Django Version: 1.0.2 final
Python Version: 2.6.1
Installed Applications:
['django.contrib.auth',
 'django.contrib.admin',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'gallery.items']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware')


Template error:
In template /opt/local/Library/Frameworks/Python.framework/Versions/
2.6/lib/python2.6/site-packages/django/contrib/admin/templates/admin/
base.html, error at line 25
   Caught an exception while rendering: bad character in group name
   15 : <!-- Container -->
   16 : <div id="container">
   17 :
   18 :     {% if not is_popup %}
   19 :     <!-- Header -->
   20 :     <div id="header">
   21 :         <div id="branding">
   22 :         {% block branding %}{% endblock %}
   23 :         </div>
   24 :         {% if user.is_authenticated and user.is_staff %}
   25 :         <div id="user-tools">{% trans 'Welcome,' %} <strong>{%
firstof user.first_name user.username %}</strong>. {% block userlinks
%} {% url django-admindocs-docroot as docsroot %} {% if docsroot %}<a
href="{{ docsroot }}">{% trans 'Documentation' %}</a> / {% endif %}<a
href="{{ root_path }}password_change/">{% trans 'Change password' %}</
a> / <a href="{{ root_path }}logout/">{% trans 'Log out' %}</a>{%
endblock %}</div>
   26 :         {% endif %}
   27 :         {% block nav-global %}{% endblock %}
   28 :     </div>
   29 :     <!-- END Header -->
   30 :     {% block breadcrumbs %}<div class="breadcrumbs"><a
href="/">{% trans 'Home' %}</a>{% if title %} &rsaquo; {{ title }}{%
endif %}</div>{% endblock %}
   31 :     {% endif %}
   32 :
   33 :         {% if messages %}
   34 :         <ul class="messagelist">{% for message in messages %}
<li>{{ message }}</li>{% endfor %}</ul>
   35 :         {% endif %}

Traceback:
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/core/handlers/base.py" in get_response
  86.                 response = callback(request, *callback_args,
**callback_kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/contrib/admin/sites.py" in root
  144.             return self.index(request)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/views/decorators/cache.py" in
_wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/contrib/admin/sites.py" in index
  318.             context_instance=template.RequestContext(request)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/shortcuts/__init__.py" in
render_to_response
  18.     return HttpResponse(loader.render_to_string(*args,
**kwargs), **httpresponse_kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/loader.py" in render_to_string
  107.     return t.render(context_instance)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/__init__.py" in render
  176.         return self.nodelist.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/__init__.py" in render
  768.                 bits.append(self.render_node(node, context))
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/debug.py" in render_node
  71.             result = node.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/loader_tags.py" in render
  97.         return compiled_parent.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/__init__.py" in render
  176.         return self.nodelist.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/__init__.py" in render
  768.                 bits.append(self.render_node(node, context))
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/debug.py" in render_node
  71.             result = node.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/loader_tags.py" in render
  97.         return compiled_parent.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/__init__.py" in render
  176.         return self.nodelist.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/__init__.py" in render
  768.                 bits.append(self.render_node(node, context))
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/debug.py" in render_node
  71.             result = node.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/defaulttags.py" in render
  245.                     return self.nodelist_true.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/__init__.py" in render
  768.                 bits.append(self.render_node(node, context))
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/debug.py" in render_node
  71.             result = node.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/defaulttags.py" in render
  255.             return self.nodelist_true.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/__init__.py" in render
  768.                 bits.append(self.render_node(node, context))
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/debug.py" in render_node
  71.             result = node.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/loader_tags.py" in render
  24.         result = self.nodelist.render(context)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/__init__.py" in render
  768.                 bits.append(self.render_node(node, context))
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/django/template/debug.py" in render_node
  81.             raise wrapped

Exception Type: TemplateSyntaxError at /admin/
Exception Value: Caught an exception while rendering: bad character in
group name

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to