<p>从Django 1.6+</strong>开始,使用任何<a href="https://docs.djangoproject.com/en/1.10/topics/class-based-views/" rel="noreferrer">class-based generic views</a>,都可以依赖<a href="https://docs.djangoproject.com/en/1.10/ref/contrib/messages/#django.contrib.messages.views.SuccessMessageMixin" rel="noreferrer">successMessageMixin</a>。只需将mixin添加到类定义并将<code>success_message</code>属性设置为所需的任何内容。</p>
<p>正如奥利维尔德提到的,请记住在主模板中<a href="https://docs.djangoproject.com/en/1.10/ref/contrib/messages/#displaying-messages" rel="noreferrer">display messages</a>!</p>
<p>来自<a href="https://docs.djangoproject.com/en/1.10/ref/contrib/messages/#adding-messages-in-class-based-views" rel="noreferrer">docs</a>的一个简单示例:</p>
<pre><code>from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.edit import CreateView
from myapp.models import Author
class AuthorCreate(SuccessMessageMixin, CreateView):
model = Author
success_url = '/success/'
success_message = "%(name)s was created successfully"
</code></pre>
<p>一个更复杂的例子:</p>
<pre><code>from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.edit import CreateView
from myapp.models import ComplicatedModel
class ComplicatedCreate(SuccessMessageMixin, CreateView):
model = ComplicatedModel
success_url = '/success/'
success_message = "%(calculated_field)s was created successfully"
def get_success_message(self, cleaned_data):
# cleaned_data is the cleaned data from the form which is used for string formatting
return self.success_message % dict(cleaned_data,
calculated_field=self.object.calculated_field)
</code></pre>