方法一: 通過字典方式返回
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)