详解Django的 get_success_json() 函数:获取表单验证成功后的 JSON 数据

  • Post category:Python

get_success_json()函数是Django框架中django.views.generic.edit模块提供的一个函数,其作用是在表单提交成功后返回一个JSON响应。下面来详细介绍一下该函数的使用方法和功能。

使用方法

导入模块

使用该函数前,需要先导入该模块,格式如下:

from django.views.generic.edit import FormView
from django.http import JsonResponse

定义视图类

先定义一个视图类,继承FormView类,并实现form_valid()函数,这个函数是用来处理表单验证通过时的逻辑。在该函数中调用get_success_json(self, **kwargs)可以返回JSON响应。

class MyFormView(FormView):
    template_name = 'my_form_template.html'
    form_class = MyForm
    success_url = '/thanks/'

    def form_valid(self, form):
        # do something
        return self.get_success_json()

函数说明

接下来让我们来了解一下get_success_json()函数的参数和返回值。

参数

get_success_json()函数没有必需的参数,但可以通过在它的实例化类中重写该函数,来自定义其参数,实例如下:

class MyFormView(FormView):
    template_name = 'my_form_template.html'
    form_class = MyForm
    success_url = '/thanks/'

    def form_valid(self, form):
        # do something
        return self.get_success_json(data=self.get_data(), message='success')

    def get_data(self):
        # 自定义函数,用来获取数据
        data = {...}
        return data

返回值

get_success_json()函数的返回值是一个JsonResponse对象,该对象将会返回一个JSON格式的字符串。其中可以包含自定义的数据和信息,例如:

{
    "status": "success",
    "data": {...},
    "message": "提交成功",
    "code": 200
}

实例说明

示例1:表单提交成功后返回数据

下面的实例演示了在表单提交成功后,返回自定义的数据。

# views.py

class MyFormView(FormView):
    template_name = 'my_form_template.html'
    form_class = MyForm
    success_url = '/thanks/'

    def form_valid(self, form):
        # do something
        data = {...}
        return self.get_success_json(data=data)
# results

{
    "status": "success",
    "data": {...},
    "message": "",
    "code": 200
}

示例2:表单提交成功后返回信息

下面的实例演示了在表单提交成功后,返回自定义的信息。

# views.py

class MyFormView(FormView):
    template_name = 'my_form_template.html'
    form_class = MyForm
    success_url = '/thanks/'

    def form_valid(self, form):
        # do something
        return self.get_success_json(message='提交成功')
# results

{
    "status": "success",
    "data": {},
    "message": "提交成功",
    "code": 200
}

以上就是get_success_json()函数的详细使用方法和功能介绍。