如何激活 DJANGO.CORE.CONTEXT_PROCESSORS.REQUEST
Posted
技术标签:
【中文标题】如何激活 DJANGO.CORE.CONTEXT_PROCESSORS.REQUEST【英文标题】:how to activate DJANGO.CORE.CONTEXT_PROCESSORS.REQUEST 【发布时间】:2011-01-13 05:24:41 【问题描述】:我读过这个
DJANGO.CORE.CONTEXT_PROCESSORS.REQUEST
如果
TEMPLATE_CONTEXT_PROCESSORS
包含此处理器,则每个 RequestContext 将包含一个变量请求,即当前 Http请求。请注意,默认情况下不启用此处理器; 你必须激活它。
来自this page
但似乎没有关于如何激活此处理器的信息。
这是我最初的问题
Access request in django custom template tags
按照我的回答后
我还是有错误
TemplateSyntaxError at / Caught an exception while rendering: 'request' Original Traceback (most recent call last):
File "C:\Python25\lib\site-packages\django\template\debug.py", line 71, in render_node result = node.render(context)
File "C:\Python25\lib\site-packages\django\template__init__.py", line 936, in render dict = func(*args)
File "c:\...\myapp_extras.py", line 7, in login request = context['request']
File "C:\Python25\lib\site-packages\django\template\context.py", line 44, in getitem raise KeyError(key) KeyError: 'request'
导致问题的代码是
request = context['request'] in
from django import template
register = template.Library()
@register.inclusion_tag('userinfo.html',takes_context = True)
def userinfo(context):
request = context['request']
address = request.session['address']
return 'address':address
【问题讨论】:
看起来在 Google 网上帮助您的人很有帮助。您应该发布他要求的代码。 【参考方案1】:我在这里回答了这个问题:How can I pass data to any template from any view in Django?
另请参阅我的答案中的 cmets...您可能也需要这些信息。
【讨论】:
谢谢,但我已经通过了“takes_context = True”,并且我在 settings.py 中包含了“django.core.context_processors.request” 为什么当我调用 context['request'] 时它仍然会出现 KeyError 为什么不打印上下文(或 context.keys()),看看里面有什么。显然,上下文没有“请求”键,所以看看它有什么键。 抱歉再次询问..我得到了这个异常值:渲染时捕获异常:'Context'对象没有属性'keys' 对不起...我以为 context 是一本字典,但它是一个 Context 对象。如果只打印上下文,它会输出什么? 非常感谢 Andrew,原来我错过了在视图代码中传递“context_instance=RequestContext(request)”【参考方案2】:在 settings.py 中
from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
'django.core.context_processors.request',
)
【讨论】:
Note that a settings file should not import from global_settings, because that’s redundant
--> docs.djangoproject.com/en/dev/topics/settings/#default-settings
那条评论是关于导入一个变量只是为了重用它,无论如何都会发生这种情况。在这里,代码从 global_settings 添加到默认设置,因此需要导入它才能访问它。以上是关于如何激活 DJANGO.CORE.CONTEXT_PROCESSORS.REQUEST的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django 模板中检查 DEBUG true/false - 完全在 layout.html [重复]
在 Keras 中使用自定义步骤激活函数会导致“'tuple' object has no attribute '_keras_shape'”错误。如何解决这个问题?