我刚刚升级到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中的哪些变化可能导致这种情况并且有人遇到类似的问题?
答案 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_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',
...
答案 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