【问题标题】:'WSGIRequest' object has no attribute'WSGIRequest' 对象没有属性
【发布时间】:2016-07-30 22:52:21
【问题描述】:

如果我制作这样的上下文处理器:

def add_external(request):
    context = {"stext":"this is the info"}
    return context

并将其添加到设置中:

'OPTIONS': {
    'context_processors': [
        'django.template.context_processors.debug',
        'django.template.context_processors.request',
        'django.contrib.auth.context_processors.auth',
        'django.contrib.messages.context_processors.messages',
        'website.context_processor.add_external',
    ],

我可以通过{{stext}} 访问模板中的变量。当我现在从这个模板中的链接跳转到同一个应用程序中的另一个视图时,我不应该能够访问这个变量:

request.stext

相反,我得到了这个错误:

'WSGIRequest' object has no attribute 'stext'

我在这里缺少什么?

【问题讨论】:

  • 不,上下文处理器不会向请求对象添加属性,它们当然不会在完全不同的请求中提供数据。为什么你认为这应该有效?
  • 你说得对,我试图做一些技术上完全不可能的事情。我通过使用会话中间件解决了它(尽管代码在相同的细节上看起来不同 -request.session 而不是 request -,但后台有很多事情发生)。

标签: django


【解决方案1】:

您实现了上下文处理器,这些数据仅在模板内部可用,而在 request 对象中不可用。

您可能想要使用自定义请求middleware

【讨论】:

  • 中间件确实解决了我的问题,我使用了已经实现的会话中间件。
猜你喜欢
  • 2017-02-02
  • 2015-04-15
  • 2013-05-20
  • 2016-09-22
  • 2015-10-19
  • 2021-11-16
  • 2012-07-31
  • 2021-12-26
  • 2011-04-23
相关资源
最近更新 更多