2012-11-08 74 views
3

我刚升级到Django 1.4,它已经打破了几件事情,包括消息。刚刚升级到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中有哪些变化可能会导致这种情况,并且有人会克服类似的问题?

回答

6

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

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

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', 
    ... 
0

从Django的1.4文档 要启用邮件功能,settings.py中执行以下操作:

编辑MIDDLEWARE_CLASSES设置,确保它包含

'django.contrib.messages.middleware.MessageMiddleware' 

如果您正在使用的存储后端是依靠会话(默认),django.contrib.sessions.middleware.SessionMiddleware必须启用并出现在之前MIDDLEWARE_CLASSES

编辑TEMPLATE_CONTEXT_PROCESSORS设置,确保它包含

'django.contrib.messages.context_processors.messages' 

添加'django.contrib.messages'INSTALLED_APPS设置

至于Django的形象而言。使用这里找到主文件:https://github.com/chadpaulson/django-avatar/tree/master/avatar

4

添加

from django.contrib import messages 

然后

def foo(request): 
    messages.add_message(request, messages.INFO, "Your message.") 
相关问题