2012-11-08 99 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.") 
相關問題