刚升级到Django 1.4并收到消息错误

时间:2012-11-08 05:50:24

标签: django

我刚刚升级到Django 1.4,它已经打破了一些事情,包括消息传递。

这是我在尝试更改头像时遇到的错误:

'User' object has no attribute 'message_set'
Exception Location: /Users/nb/Desktop/myenv2/lib/python2.7/site-packages/django/utils/functional.py in inner, line 185

回溯:

File "/Users/nb/Desktop/myenv2/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/Users/nb/Desktop/myenv2/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  20.                 return view_func(request, *args, **kwargs)
File "/Users/nb/Desktop/spicestore/apps/avatar/views.py" in change
  76.             request.user.message_set.create(
File "/Users/nb/Desktop/myenv2/lib/python2.7/site-packages/django/utils/functional.py" in inner
  185.         return func(self._wrapped, *args)

Exception Type: AttributeError at /avatar/change/
Exception Value: 'User' object has no attribute 'message_set'

此外,消息传递不再适用于该网站。 Django 1.4中的哪些变化可能导致这种情况并且有人遇到类似的问题?

4 个答案:

答案 0 :(得分:6)

Django在1.2中引入了一个消息应用程序(release notes),并弃用了旧的用户消息API。

在Django 1.4中,旧的message_set API已被完全删除,因此您必须更新代码。如果你按照messages docs进行操作,你会发现它非常直接。

答案 1 :(得分:4)

添加

from django.contrib import messages

然后

def foo(request):
    messages.add_message(request, messages.INFO, "Your message.")

答案 2 :(得分:0)

INSTALLED_APPSsettings.py的内容是什么?

你有'django.contrib.messages',吗?

类似的东西:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    ...

答案 3 :(得分:0)

来自Django 1.4文档 要启用消息功能,请在settings.py中执行以下操作:

修改MIDDLEWARE_CLASSES设置并确保其中包含

'django.contrib.messages.middleware.MessageMiddleware'

如果您使用的是依赖会话的存储后端(默认设置),则必须启用django.contrib.sessions.middleware.SessionMiddleware并在MessageMiddleware MIDDLEWARE_CLASSES之前显示。{/ p>

修改TEMPLATE_CONTEXT_PROCESSORS设置并确保其中包含

'django.contrib.messages.context_processors.messages'

'django.contrib.messages'添加到您的INSTALLED_APPS设置

就django-avatar而言。使用此处的主文件:https://github.com/chadpaulson/django-avatar/tree/master/avatar