我试图让Zinnia在django网站上运行,以便我可以评估它。我已经成功安装了所有依赖项,一切都很好,我使用管理工具创建了一些帖子,但现在我收到错误访问它们了!
错误:
KeyError at /weblog/2012/10/12/test-post/
'request'
Request Method: GET
Request URL: http://127.0.0.1:8000/weblog/2012/10/12/test-post/
Django Version: 1.4.1
Exception Type: KeyError
Exception Value: 'request'
Exception Location: /usr/local/lib/python2.7/site-packages/django/template/context.py in __getitem__, line 54
Python Executable: /usr/local/bin/python
Python Version: 2.7.3
Python Path:
['/home/ubuntudev/webtest/twsite',
'/usr/local/lib/python2.7/site-packages/setuptools-0.6c12dev_r88846-py2.7.egg',
'/usr/local/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg',
'/usr/local/lib/python27.zip',
'/usr/local/lib/python2.7',
'/usr/local/lib/python2.7/plat-linux2',
'/usr/local/lib/python2.7/lib-tk',
'/usr/local/lib/python2.7/lib-old',
'/usr/local/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/site-packages']
供参考,这是我的settings.py和我的urls.py。后者无疑是一团糟,因为我一直在想着我能想到的一切。
我刚刚和Django以及Zinnia擦肩而过,所以请在你的答案中描述一下!提前谢谢。
答案 0 :(得分:3)
Django有一个系统,用于向您的模板提供名为context processors(here's a good blog post about them)的变量。如果您希望在每个模板中都包含某些信息,这些系统很有用。例如,如果您没有我希望必须将导航菜单的所有链接添加到每个视图/模板,您可以改为编写模板处理器,将这些链接作为列表提供给每个模板。
有些上下文处理器对大多数应用程序都非常关键。其中一个是django.core.context_processors.request
,它将当前请求对象传递给每个模板。这样,您就可以访问模板中的{{ request }}
变量,该变量将为您提供有关用户发送的标题等信息(as well as much more)。
无论如何,简而言之,你已经在你的设置中禁用了上述django.core.context_processors.request
:
#TEMPLATE_CONTEXT_PROCESSORS = (
# "django.contrib.auth.context_processors.auth",
# 'django.core.context_processors.i18n',
# 'django.core.context_processors.request',
# 'django.core.context_processors.media',
# 'django.core.context_processors.static',
# 'zinnia.context_processors.version',
#)
所以取消所有这些,你应该没事。