Итак, я только начинаю изучать Джанго и пытаюсь заполнить один из примеров приложений из книги. Я застреваю сейчас на создании сухих URL. Точнее говоря, я не могу заставить мой контекстный процессор работать. Я создаю свой контекстный процессор так:
from django.conf import settings
#from mysite.settings import ROOT_URL
def root_url_processor(request):
return {'ROOT_URL': settings.ROOT_URL}
и я поместил этот файл в свое приложение, в частности, mysite / photogallery / context_processors.py. Мой файл settings.py в корне моего проекта содержит:
TEMPLATE_CONTEXT_PROCESSORS = ('mysite.context_processors',)
Когда я пытаюсь перейти к ROOT_URL, который я также указал в файле settings.py, я получаю эту ошибку:
TypeError at / gallery /
объект 'module' не вызывается
/ gallery / - это ROOT_URL этого конкретного приложения. Я понимаю, что это может означать конфликт имен, но я не могу его найти. Кроме того, когда я закомментирую определение TEMPLATE_CONTEXT_PROCESSORS из settings.py, приложение действительно загружается, однако мои миниатюрные изображения не отображаются (возможно, потому что мои шаблоны не знают о ROOT_URL, верно?). У кого-нибудь есть идеи относительно того, в чем может быть проблема?
РЕДАКТИРОВАТЬ : Вот некоторая информация о моем settings.py в случае его использования:
ROOT_URLCONF = 'mysite.urls'
ROOT_URL = '/gallery/'
LOGIN_URL = ROOT_URL + 'login/'
MEDIA_URL = ROOT_URL + 'media/'
ADMIN_MEDIA_PREFIX = MEDIA_URL + 'admin/'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
TEMPLATE_CONTEXT_PROCESSORS = ('mysite.photogallery.context_processors',)
EDIT2 : Я собираюсь добавить некоторую информацию о моих файлах URL. По сути, у меня есть корень urls.py, real_urls.py, который также находится в корне, и urls.py, который существует в приложении. По сути, root / urls.py скрывает ROOT_URL от real_urls.py, который затем включает в себя urls.py моего приложения.
корень / urls.py:
from django.conf.urls.defaults import *
#from mysite.settings import ROOT_URL
from django.conf import settings
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Example:
(r'^blog/', include('mysite.blog.urls')),
url(r'^%s' % settings.ROOT_URL[1:], include('mysite.real_urls')),
)
корень / real_urls.py:
from django.conf.urls.defaults import *
from django.contrib import admin
urlpatterns = patterns('', url(r'^admin/(.*)', admin.site.root),
url(r'^', include('mysite.photogallery.urls')),
)
root / photogallery / urls.py (обратите внимание, что эта проблема, вероятно, не вызывает каких-либо проблем, но я добавляю ее здесь на случай, если кто-то захочет ее увидеть.):
from django.conf.urls.defaults import *
from mysite.photogallery.models import Item, Photo
urlpatterns = patterns('django.views.generic', url(r'^$', 'simple.direct_to_template', kwargs={'template': 'index.html', 'extra_context': {'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' ), url(r'^photos/(?P<object_id>\d+)/$', 'list_detail.object_detail', kwargs={'queryset': Photo.objects.all(), 'template_name': 'photos_detail.html' }, name='photo_detail'),)