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

  • Post category:Python

get_success_json()函数是Django中通用视图类的一个方法,用于处理成功之后返回json数据的情况。该方法返回一个字典对象,包含需要返回的数据,通常包括表单数据和一些自定义的响应信息,如消息提示、状态码等。

使用方法:
首先在通用视图类中重写get_success_json()方法,并返回需要返回的数据。然后在视图中直接调用get_success_json()方法即可。需要注意的是,该方法只能返回json数据,如果需要返回其他类型的响应,需要使用其他方法。

下面给出两个示例:

示例一:返回一个简单的json响应

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

from .models import Book


class BookCreateView(CreateView):
    model = Book
    fields = ['title', 'author', 'price']

    def form_valid(self, form):
        self.object = form.save()
        return JsonResponse(self.get_success_json())

    def get_success_json(self):
        data = {
            'success': True,
            'message': '书籍添加成功!'
        }
        return data

以上BookCreateView是一个添加书籍的视图类,在执行form_valid时,我们先保存表单数据,然后使用JsonResponse方法进行字典对象的转换返回,这里使用了get_success_json方法来实现。

示例二:增加状态码及自定义响应消息

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

from .models import Book


class BookCreateView(CreateView):
    model = Book
    fields = ['title', 'author', 'price']

    def form_valid(self, form):
        self.object = form.save()
        return JsonResponse(self.get_success_json(), status=201)

    def get_success_json(self):
        data = {
            'success': True,
            'message': '书籍添加成功!',
            'status_code': 201
        }
        return data

以上代码中,我们在JsonResponse方法中增加了第二个参数status来指定响应状态码,同时在get_success_json方法中增加了一个自定义的状态码。