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')
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')
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
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
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
6:md5加密
def md5(s):
m = hashlib.md5(s.encode('utf8'))
return m.hexdigest()
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()
这里传入的file是request.FILES对象,save_path是图片保存路径
1:在views模板下编写测试函数(记得在urls.py文件中进行相应配置)
2:将刚刚封装的函数所在模板引入views.py
3:使用@get进行拦截
@get
def test(request):
return response_success('test')#返回json
4:使用postman进行测试
post请求
get请求
@post的用法如上
@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:@params中传入你所需的字段
2:args是一个list,list里面的数据按字段顺序排列
3:如上面的例子args[0]为account字段的值args[1]是password字段的值
4:从数据库查询出来的结果要用model_to_dict方法才能返回json格式字符串