[英]Django Context Processor Trouble
所以我剛剛開始學習Django,我正在嘗試完成本書中的一個示例應用程序。 我現在因為創建DRY 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',)
當我嘗試轉到我在settings.py中指定的ROOT_URL時,收到此錯誤:
/ gallery /的TypeError
'module'對象不可調用
/ gallery /是此特定應用程序的ROOT_URL。 我意識到perhpas這可能意味着命名沖突,但我找不到一個。 此外,當我從settings.py注釋掉TEMPLATE_CONTEXT_PROCESSORS定義時,應用程序實際上會加載,但是我的縮略圖圖像沒有出現(可能是因為我的模板不知道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會從real_urls.py中隱藏ROOT_URL,然后包含我的應用程序的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'),)
TEMPLATE_CONTEXT_PROCESSORS
應包含可調用對象的列表,而不是模塊。 列出將轉換模板上下文的實際函數。 鏈接到文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.