代码之家  ›  专栏  ›  技术社区  ›  AlbertoPL

Django上下文处理器故障

  •  1
  • AlbertoPL  · 技术社区  · 17 年前

    所以我刚刚开始学习Django,我正试图完成书中的一个示例应用程序。我现在被困在创建干燥的URL上。更具体地说,我无法让上下文处理器工作。我创建上下文处理器,如下所示:

    from django.conf import settings
    #from mysite.settings import ROOT_URL
    
    def root_url_processor(request):
      return {'ROOT_URL': settings.ROOT_URL}
    

    TEMPLATE_CONTEXT_PROCESSORS = ('mysite.context_processors',)
    

    当我尝试转到在my settings.py中指定的ROOT_URL时,我收到以下错误:

    在/图库中输入错误/

    “模块”对象不可调用

    :以下是有关my 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',)
    

    编辑2 :我要添加一些关于我的url文件的信息。实际上,我有一个根url.py、一个也位于根的real_url.py和一个存在于应用程序中的url.py。基本上,root/urls.py从real_urls.py隐藏root_URL,real_urls.py包含我的应用程序的URL.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')),
        )
    

    root/real_url.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/url.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'),)
    
    1 回复  |  直到 17 年前
        1
  •  4
  •   SingleNegationElimination    17 年前

    TEMPLATE_CONTEXT_PROCESSORS 应该包含可调用对象的列表,而不是模块。列出将转换模板上下文的实际函数。 Link to docs