基於django封裝的經常使用裝飾器和函數

1:返回操做成功的json數據python

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請求json

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加密markdown

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

7:保存文件session

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是圖片保存路徑app


@get和@post使用

1:在views模板下編寫測試函數(記得在urls.py文件中進行相應配置) 
2:將剛剛封裝的函數所在模板引入views.py 
3:使用@get進行攔截函數

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

4:使用postman進行測試 
post請求 
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格式字符串

這裏寫圖片描述

相關文章
相關標籤/搜索