get_success_json()
是Django框架中django.views.generic.edit.ModelFormMixin
类中的一个方法,主要用于在提交表单成功后,返回JSON格式的响应数据。
get_success_json()
方法的使用方法非常简单,只需要在需要使用的视图中继承ModelFormMixin
类,然后重写get_success_json()
方法即可。该方法需要返回一个字典类型的JSON数据,该JSON数据将用于Ajax请求后的响应。
以下是该函数的完整定义:
class ModelFormMixin:
# ...
def get_success_json(self, form):
return JsonResponse({'success': True})
其中,form
参数是表单对象,我们可以通过该参数的值获取表单数据并进行处理。
给出两个实际的例子:
实例一
当用户在网站上注册成功后,需要返回JSON格式的响应给确认页面,可以使用get_success_json()
方法。具体的实现方法如下所示:
from django.http import JsonResponse
from django.views.generic.edit import FormView
from .forms import RegisterForm
class RegisterView(FormView):
template_name = 'register.html'
form_class = RegisterForm
success_url = 'thanks/'
def form_valid(self, form):
form.save()
return self.get_success_response()
def get_success_response(self):
if self.request.is_ajax():
return self.get_success_json(form=self.form)
return super().form_valid(form)
def get_success_json(self, form):
return JsonResponse({'success': True})
上述代码中,定义了一个RegisterView
类,通过继承FormView
和ModelFormMixin
类,实现了表单提交功能,当注册成功时,如果是Ajax请求,则会返回JSON格式的响应数据。
实例二
假设我们需要在向数据库中插入新的数据成功后,在前端页面中返回插入成功的文本信息,可以使用get_success_json()
方法来实现。
class NewsCreateView(LoginRequiredMixin, CreateView):
model = News
form_class = NewsCreateForm
template_name = 'news_add.html'
def form_valid(self, form):
self.object = form.save()
return self.get_success_response()
def get_success_response(self):
if self.request.is_ajax():
return self.get_success_json(form=self.object)
return super().form_valid(form)
def get_success_json(self, form):
return JsonResponse({'success': True, 'message': '恭喜您,添加新闻成功!'})
上述代码中,定义了一个NewsCreateView
类,通过继承CreateView
和ModelFormMixin
类,实现了添加新闻的功能,当添加成功时,如果是Ajax请求,则会返回JSON格式的响应数据,包含插入成功的文本信息。