方法一: 通过字典方式返回
def login_view(request): if request.method == 'POST':
# 定义一个默认返回数据字典 back_code = {'code': 200, 'msg':''} form = LoginForm(request.POST) if form.is_valid(): telephone = form.cleaned_data.get('telephone') password = form.cleaned_data.get('password') remember = request.POST.get('remember') user = authenticate(request, username=telephone, password=password) if user: if user.is_active: login(request, user) if remember: request.session.set_expiry(None) else: request.session.set_expiry(0) else:
# 做完判断修改字典中的数据 back_code['code'] = 101 back_code['msg'] = '该账户已锁定!' else: back_code['code'] = 102 back_code['msg'] = '该账户不存在!' else: pass
# 将字典返回 return JsonResponse(back_code, safe=False, json_dumps_params={'ensure_ascii': False}) return render(request, 'cms/login.html')
方法二: 封装返回数据工具
from django.http import JsonResponse class HttpCode(object): ''' 定义状态 ''' ok = 200 paramserror = 400 unauth = 401 methoderror = 405 servererror = 500 def result(code=HttpCode.ok, message='', data=None, kwargs=None): ''' 封装返回JsonResponse方法 :param code: 状态 :param message: 错误信息 :param data: 返回数据 :param kwargs: 保证代码的健壮性 :return: JsonResponse数据 ''' # 定义返回的字典 json_dic = {'code': code, 'message': message, 'data': data} # 判断kwargs是否存在以及格式是否正确, 通过则添加入字典中 if kwargs and isinstance(kwargs, dict) and kwargs.keys(): json_dic.update(kwargs) return JsonResponse(json_dic, safe=False, json_dumps_params={'ensure_ascii': False})
def params_error(message='', data=None): return result(code=HttpCode.paramserror, message=message, data=data) def unauth(message='', data=None): return result(code=HttpCode.unauth, message=message, data=data) def method_error(message='', data=None): return result(code=HttpCode.methoderror, message=message, data=data) def server_error(message='', data=None): return result(code=HttpCode.servererror, message=message, data=data)