2016-10-21 31 views
0

我在SuccessMessageMixin項目中遇到此錯誤,並且不知道爲什麼。這是我在view.py中的代碼。'str'對象不可調用 - SuccessMessageMixin

from django.contrib.messages.views import SuccessMessageMixin 
from django.views.generic import CreateView 

class CampanaNueva(SuccessMessageMixin, CreateView): 
    model = Campana 
    template_name = "licencias_campana_nueva.html" 
    fields = ['temporada', 'descripcion'] 
    success_message = "a" 

,並提高對保存此錯誤:

Environment: 


Request Method: POST 
Request URL: http://127.0.0.1:8000/licencias/editar/1 

Django Version: 1.9.4 
Python Version: 3.4.4 
Installed Applications: 
['django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'bootstrap3', 
'home', 
'widget_tweaks', 
'socios', 
'equipaciones', 
'licencias'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
'cc_corbelo.middleware.LoginRequiredMiddleware'] 



Traceback: 

File "C:\Python34\lib\site-packages\django\core\handlers\base.py" in get_response 
    149.      response = self.process_exception_by_middleware(e, request) 

File "C:\Python34\lib\site-packages\django\core\handlers\base.py" in get_response 
    147.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "C:\Python34\lib\site-packages\django\views\generic\base.py" in view 
    68.    return self.dispatch(request, *args, **kwargs) 

File "C:\Python34\lib\site-packages\django\views\generic\base.py" in dispatch 
    88.   return handler(request, *args, **kwargs) 

File "C:\Python34\lib\site-packages\django\views\generic\edit.py" in post 
    279.   return super(BaseUpdateView, self).post(request, *args, **kwargs) 

File "C:\Python34\lib\site-packages\django\views\generic\edit.py" in post 
    222.    return self.form_valid(form) 

File "C:\Python34\lib\site-packages\django\contrib\messages\views.py" in form_valid 
    14.    messages.success(self.request, success_message) 

Exception Type: TypeError at /licencias/editar/1 
Exception Value: 'str' object is not callable 

我有這個功能沒有問題的另一個項目的工作...

+1

誤差約爲'類型錯誤在/ licencias/editar/1'但你向我們展示'CampanaNueva'是你確定在這個視圖中的問題? –

回答

1

我正是這種相同的消息時,我不小心使用了messages框架在我的項目中完全不同的視圖的form_valid方法中不正確。

正確的代碼應該是:

messages.success(request, "Deactivated product")

但我已經不是寫是

messages.success = "Deactivated product"

此代碼不能正常工作,但它不會引起錯誤在頁面上!但是,只要我提交不同的表格,使用SuccessMessageMixin,我會看到'str' object is not callable錯誤。

(有一個頁面上的問題會導致完全不同的頁面上的錯誤很有趣調試。)

+0

我有同樣的錯誤 – paralosreg