django - Django消息框架无法在模板循环中工作

标签 django django-middleware django-1.3 django-context

我最近升级到Django 1.3,并且想开始使用Messages系统。

我已经将我的中间件,模板上下文处理器以及消息添加到INSTALLED_APPS

MIDDLEWARE_CLASSES = (
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.csrf.CsrfResponseMiddleware',
    'facebook.djangofb.FacebookMiddleware',
    'annoying.middlewares.RedirectMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.request",
    "django.contrib.messages.context_processors.messages",
)

INSTALLED_APPS = (
    'django.contrib.messages',
)

我只是基于基于简单计算的 View 进行测试。

在管理员中,显示消息,但是当尝试在base.html文件中呈现它们时,出现以下错误。
Caught TypeError while rendering: 'module' object is not iterable

并在堆栈中失败。
{% for message in messages %}

我也删除了for语句,仍然出现以下错误,仅此而已
<module 'django.contrib.messages' from '/Users/ApPeL/.virtualenvs/mysite.com/lib/python2.7/site-packages/django/contrib/messages/__init__.py'>

有任何想法吗?

最佳答案

我刚遇到这个问题。我在上下文处理器中添加了以下内容:

from django.contrib import messages
...
def allrequests(request):
    ctx = {
        ...
        'messages': messages
    }
    return ctx

确保您没有在上下文中设置messages,因为django.contrib.messages.context_processors.messages以正确的方式设置了它。

关于django - Django消息框架无法在模板循环中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569174/

相关文章:

django - 在 views.py 文件中的所有 View 中运行的代码

Django 2.0 自定义中间件 process_exception Hook 未触发

django - 在 Postgres 中使用 jsonb(与 Django 的 JSONField 一起使用)唯一索引实际上做了什么?

python - Django 1.8.2 和 dumpdata 的 simplejson 错误

python - Django 导入错误 : No module named middleware

python - 基于类的 View 扩展 UpdateView 未正确保存表单

python - Django:css 引用静态文件中的媒体(django dev/1.3/static 文件)

django - 面向 Django 开发人员的 Symfony 2 指南

javascript - 注销后禁用浏览器 'Back' 按钮?