博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于django封装的常用装饰器和函数
阅读量:4582 次
发布时间:2019-06-09

本文共 2384 字,大约阅读时间需要 7 分钟。

1:返回操作成功的json数据

def response_success(message, data=None, data_list=[]):    return HttpResponse(json.dumps({ 'code': 2000,#code由前后端配合指定 'message': message,#提示信息 'data': data,#返回单个对象 'dataList': data_list#返回对象数组 }), 'application/json')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2:返回操作失败的json数据

def response_failure(message, data=None, data_list=[]):    return HttpResponse(json.dumps({ 'code': 4000, 'message': message, 'data': data, 'dataList': data_list }), 'application/json')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3:拦截非get请求

def get(func):    def in_fun(request): if request.method == 'GET': return func(request) else: return response_failure('not get request') return in_fun
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4:拦截非post请求

def post(func):    def in_fun(request): if request.method == 'POST': return func(request) else: return response_failure('not post request') return in_fun
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5:参数检查

def params(*args):#接收传入的字段 def check_params(func): def in_fun(request): p = [] for val in args:#遍历客户端请求是否包含字段 param = request.POST.get(val, 100) if param == 100:#若不包含则返回错误 return response_failure('need param %s' % val) else: p.append(param)#若包含则传入数组返回给被装饰的函数 return func(request, p) return in_fun return check_params
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

6:md5加密

def md5(s):    m = hashlib.md5(s.encode('utf8')) return m.hexdigest()
  • 1
  • 2
  • 3

7:保存文件

def save_file(file, save_path='photo'): destination = open(os.path.join(save_path, file.name), 'wb+') for chunk in destination: destination.write(chunk) destination.close()
  • 1
  • 2
  • 3
  • 4
  • 5

这里传入的file是request.FILES对象,save_path是图片保存路径


@get和@post使用

1:在views模板下编写测试函数(记得在urls.py文件中进行相应配置) 

2:将刚刚封装的函数所在模板引入views.py 
3:使用@get进行拦截

@getdef test(request): return response_success('test')#返回json
  • 1
  • 2
  • 3

4:使用postman进行测试 

post请求 
post请求

get请求 

@post的用法如上

@params,response_success,response_failure使用

@post@params('account', 'password')def login(request, args): user = BUser.objects.filter(account=args[0], password=md5(args[1])) if len(user) == 0: return response_failure('account or password error') u = model_to_dict(user[0]) u['password'] = '' request.session[config.LOGIN] = config.TAG_LOGIN return response_success('login success', u)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1:@params中传入你所需的字段 

2:args是一个list,list里面的数据按字段顺序排列 
3:如上面的例子args[0]为account字段的值args[1]是password字段的值 
4:从数据库查询出来的结果要用model_to_dict方法才能返回json格式字符串

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_35055467/article/details/77450117

转载于:https://www.cnblogs.com/ExMan/p/9477554.html

你可能感兴趣的文章
松鼠症 知识过载与疲于奔命
查看>>
css+html+js实现多级下拉和弹出菜单
查看>>
文档翻译第003篇:Process Monitor帮助文档(Part 3,附Process Monitor的简单演示)
查看>>
转载 sql 首字母大写
查看>>
IdentityServer4 简单使用,包括api访问控制,openid的授权登录,js访问
查看>>
探索性数据分析(EDA)
查看>>
项目积累——jQuery
查看>>
Jenkins pipeline概念理解
查看>>
iOS与JS交互
查看>>
Python Scrapy爬虫框架之初次使用
查看>>
struts2 拦截器【转】
查看>>
入驻校孵化园
查看>>
[NOI2000]算符破译
查看>>
排序算法2---简单选择排序
查看>>
剑指offer 07:斐波那契数列
查看>>
Linux系统目录(转载)
查看>>
将博客搬至CSDN
查看>>
git 常用命令
查看>>
jQ判断checked是否选中
查看>>
AngularJS Scope(作用域)
查看>>