3

我刚刚升级到 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

4 回答 4

6

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

在 Django 1.4 中,旧的 message_set API 已被完全删除,因此您必须更新您的代码。如果您遵循消息文档,您应该会发现它非常简单。

于 2012-11-08T08:04:13.653 回答
4

添加

from django.contrib import messages

进而

def foo(request):
    messages.add_message(request, messages.INFO, "Your message.")
于 2013-08-15T16:49:57.187 回答
0

你的里面有INSTALLED_APPS什么settings.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',
    ...
于 2012-11-08T05:55:31.320 回答
0

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

编辑MIDDLEWARE_CLASSES设置并确保它包含

'django.contrib.messages.middleware.MessageMiddleware'

如果您使用依赖于会话(默认)的存储后端,则django.contrib.sessions.middleware.SessionMiddleware必须启用并出现MessageMiddleware在您的MIDDLEWARE_CLASSES.

编辑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

于 2013-02-13T01:23:05.553 回答