【问题标题】:Variable in Django Context ProcessorDjango 上下文处理器中的变量
【发布时间】:2013-09-05 10:45:10
【问题描述】:

我想在上下文处理器中注册一个变量,但出现的问题是它不起作用并且没有显示任何错误。

views.py :-

def newmessage(request):
    getmessagevalue = interview.objects.all()
    return {'getmessagevalue': getmessagevalue }

settings.py :-

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.contrib.messages.context_processors.messages",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.static",
    "django.core.context_processors.media",
    "django.core.context_processors.request",
    "django.core.context_processors.tz",
    "userprofile.views.newmessage"

)

怎么办,错误和值不显示。

【问题讨论】:

  • 如何在 html(模板)代码中访问这些值?

标签: python django function error-handling


【解决方案1】:

您向我们展示的代码在我看来没问题。您需要确保您的视图(未显示)正在使用请求上下文呈现模板。 See the docs 了解更多信息。

将日志记录或打印语句添加到您的上下文处理器,以确保它在您的视图中运行。也许您的数据库中没有 interview 对象,所以它返回一个空查询集。

另一个帮助调试的选项是安装Django debug toolbar。它有一个Template 面板,显示模板上下文处理器的输出。

另外几个建议:

  • 将您的模型命名为Interview,并在您的方法new_message 和变量get_message_value 名称中使用下划线。
  • 将上下文处理器放在单独的模块 userprofile.context_processors 中,而不是放在视图模块中。

如果您遵循这些约定,您的代码对于有经验的 python 和 Django 开发人员来说更容易阅读,因此您更有可能得到问题的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2016-07-01
    • 1970-01-01
    • 2019-10-12
    • 2016-04-02
    • 2018-02-04
    • 2012-06-24
    相关资源
    最近更新 更多