关键词

详解Django的 get_success_message() 函数:获取表单验证成功后的消息

Django的get_success_message()函数介绍

get_success_message()方法是DJango框架中的一个函数,返回一个字符串信息,用于响应成功操作的消息提示。正常来讲成功后我们需要用messages框架返回成功信息,但在某些情况下比如ajax提交等无法使用messages框架,这时候就可以用get_success_message()函数返回成功提示信息。下面详细介绍这个函数的作用和使用方法。

作用

get_success_message()函数的作用是返回一个成功提示信息的字符串用于响应用户操作。

使用方法

  1. 继承SuccessMessageMixin类,重写success_message属性,为后续使用打下基础,示例代码如下:
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic import CreateView

class ArticleCreateView(SuccessMessageMixin, CreateView):
    model = Article
    success_url = reverse_lazy('article:index')
    fields = ('article_title', 'article_content')
    success_message = "%(article_title)s was created successfully"  # 要显示的成功信息字段

通过SuccessMessageMixin继承我们实现了success_message属性的重定义,定义成功信息显示的内容。

重写后的get_success_message()函数就会根据指定的success_message属性生成成功提示信息,从而达到我们的效果。

  1. 重写get_success_message()函数手动指定成功提示信息,示例代码如下:
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.views import SuccessMessageMixin
from django.urls import reverse_lazy
from django.views.generic.edit import CreateView

class UserCreateView(SuccessMessageMixin, CreateView):
    form_class = UserCreationForm
    template_name = 'users/signup.html'
    success_url = reverse_lazy('books')

    def get_success_message(self, cleaned_data):
        return 'User %(username)s was created successfully' % dict(
            cleaned_data,
            password='********', #这里将password保存成了*号,保证安全性
        )

我们在这个例子中的作用是创建用户。使用UserCreationForm创建用户的同时,重写了get_success_message函数,手动指定返回的信息。

注意事项

get_success_message()函数其实很简单,只要继承SuccessMessageMixin就可以使用了。

需要注意几点:
- 需要SuccessMessageMixin继承
- success_message或者get_success_message 两者必须实现至少一个
- success_message定义消息变量,get_success_message根据参数返回消息。

以上两个例子均已成功地实现了get_success_message()函数的使用,可以解决一些messages框架使用不便的问题。

希望本攻略能对需要使用get_success_message()函数的DJango开发者有所帮助。

本文链接:http://task.lmcjl.com/news/16261.html

展开阅读全文