1

我正在尝试让 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 弄湿了,所以请在你的回答中描述一下!提前致谢。

4

1 回答 1

3

Django 有一个将变量传递到模板的系统,称为上下文处理器这里有一篇关于它们的好博文)。如果您想在每个模板中包含某些信息,这些非常有用。例如,如果您不想将导航菜单的所有链接添加到每个视图/模板,则可以改为编写模板处理器以将这些链接作为列表传递给每个模板。

有一些上下文处理器对大多数应用程序来说都相当重要。其中之一是django.core.context_processors.request将当前请求对象传递给每个模板。这允许您访问{{ request }}模板中的变量,该变量将为您提供有关用户已发送的标题等信息(以及更多信息)。

无论如何,长话短说,您已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',
#)

所以取消所有这些,你应该没问题

于 2012-10-30T18:43:43.360 回答