前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django中方便快捷的json响应

Django中方便快捷的json响应

作者头像
KEVINGUO_CN
发布2020-03-17 18:14:47
8400
发布2020-03-17 18:14:47
举报
文章被收录于专栏:全栈全栈全栈全栈

目前流行的前后端分离开发模式中,前端工程师需要根据后端开发人员给出的API文档发起不同的请求得到数据,API文档规定了一些请求的模板以及响应的数据格式和代码。

通常,前后端约定一些代码以代表一定含义的响应。

在这里,分享一个作者在开发过程中经常使用的一些技巧。

1新建utils文件夹

2新建json_status.py 文件

代码语言:javascript
复制
#导入模块
from django.http import JsonResponse

django 提供了一个jsonResponse方法,可以返回一个标准的json响应。

3创建一个 Code 的类

代码语言:javascript
复制
class Code:
    ok = 2
    params_error = 1
    un_auth_error = 403
    server_error = 500

返回不同状态的响应代码

4创建一个标准的json响应函数

代码语言:javascript
复制
def result(code = Code.ok,message = '',data = None,**kwargs):
    json_dict = {"code":code, 'msg':message,"data":data}
    if kwargs and isinstance(kwargs,dict):
        json_dict.update(kwargs)
    return JsonResponse(json_dict)

在这里,通过定义result函数,封装一些常用的响应字段,例如响应的代码,信息,数据,可供前端使用。

**kwargs:熟悉Python的朋友一定不会陌生,这是Python中经典的使用,可以向函数中传入不定长的参数。

5创建更丰富的json响应函数

代码语言:javascript
复制
ef params_error(message='',data=None):
    '''
     参数错误
    :param message:传给前端的信息
    :param data: 传给前端的数据,字典类型
    :return: Json响应
    '''
    return result(code=Code.params_error,message=message,data=data)

def un_auth_error(code=Code.un_auth_error,message='',data=None):
    '''
    权限错误
    :param code:
    :param message:
    :param data:
    :return:
    '''
    return result(code,message=message,data=data)


def server_error(code = Code.server_error,message='',data=None):
    '''
    服务器错误
    :param code:
    :param message:
    :param data:
    :return:
    '''
    return result(code,message=message,data=data)

上面我们创建了一系列的json响应函数,下面我们演示如何在视图函数中使用。

6在视图中响应使用响应函数

代码语言:javascript
复制
#首先导入
from utils import json_status

#创建一个视图函数
def index(request):
    id = int(request.GET.get("id"))
    if id ===1:
        return json_status.result(message='成功')
    else:
        return json_status.params_error(message='参数错误')

通过GET方法,获取到的id的值,判断id。

如果id=1 则返回成功的响应

如果id为其他值,则返回参数错误的响应

在前端中(以ajax为例)

代码语言:javascript
复制
            $.ajax({
                type: get,
                url: url,
                data: {"id":1},
                success: function (result) {
                    if (result.code ==2) {
                        alert(result.message);
                        });
                    } else{
                        alert(result.code);
                        alert(result.message);
                    }
                    return;
                }
            });

通过上述方法,可以返回一个标准的json响应。前端根据不同的响应代码,进行操作。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档