如果不安装django.contrib.messages.middleware.MessageMiddleware,则无法添加消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果不安装django.contrib.messages.middleware.MessageMiddleware,则无法添加消息相关的知识,希望对你有一定的参考价值。

我是Django的新手。我正在尝试运行应用程序,我需要向管理员添加新用户。服务器正在运行。当我输入信息冷杉新用户并点击“保存”时,我收到以下错误。我正在使用django-trunk。

MessageFailure at /admin/auth/user/add/
You cannot add messages without installing
django.contrib.messages.middleware.MessageMiddleware

Request Method: POST
Request URL:    http://localhost:8000/admin/auth/user/add/
Django Version: 1.6.dev20130403090717
Exception Type: MessageFailure
Exception Value:    You cannot add messages without installing django.contrib.messages.middleware.MessageMiddleware

关于可能发生什么的任何想法?

答案

对我来说,问题是单元测试所特有的。事实证明,某些中间件在某些单元测试中不起作用,更多信息请点击:

https://code.djangoproject.com/ticket/17971

和这里:

Why don't my Django unittests know that MessageMiddleware is installed?

我的解决方案只是模拟这些测试的消息框架,可能有更好的解决方案(django测试客户端?)

另一答案

检查django.contrib.messages中的INSTALLED_APPSdjango.contrib.messages.middleware.MessageMiddleware中的MIDDLEWARE_CLASSES

另一答案

检查是否是

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

代替

MIDDLEWARE = (
   'django.middleware.common.CommonMiddleware',
   'django.contrib.sessions.middleware.SessionMiddleware',
   'django.contrib.auth.middleware.AuthenticationMiddleware',
   'django.contrib.messages.middleware.MessageMiddleware',
)

元组名称应为MIDDLEWARE_CLASSES

MIDDLEWARE_CLASSES折旧https://docs.djangoproject.com/en/2.1/releases/1.10/#id3

另一答案

2018更新在设置中的django 2.0+名称被更改。现在在设置中使用MIDDLEWARE而不是MIDDLEWARE_CLASSES列表名称!

另一答案

我遇到了同样的错误。您必须注意MIDDLEWARE_CLASSES中的中间件的顺序。在最后插入相应的中间件。就像这样,

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

请注意订单安排。

另一答案

可能你把一个错误的WSGI_request当通常称为request作为add_message()方法的参数

以上是关于如果不安装django.contrib.messages.middleware.MessageMiddleware,则无法添加消息的主要内容,如果未能解决你的问题,请参考以下文章

bash,测试curl是不是存在,如果不存在则安装[重复]

Inno Setup 安装完成后,默认不重启

导入的库 'owaspapi' 不包含关键字。 (如果它是使用 pip 安装的)

如果 venv 文件夹安装在子目录中,为啥 VSCode 不检测 venv?

如果安装了 Facebook 应用程序,UIActivityViewController 不显示 Facebook

Deeplink url 需要播放商店/应用商店,但如果安装则不打开应用