Django 2.1.7 處理ajax請求、GET、POST請求
- 2019 年 10 月 5 日
- 筆記
需求問題
在業務處理的工作中,在同一個視圖處理上,可能會有普通的GET、POST請求,還會有ajax請求。 那麼怎麼在處理這些請求的時候做上區分呢?
對於這個問題需要有以前兩種區分:
- 一種是視圖函數
- 一種是類視圖
這兩種方式在處理上大同小異,下面來看看例子。
視圖函數: 同時存在GET,POST,Ajax處理
def test(request): if request.method == 'GET': ... if request.is_ajax(): ... return JsonResponse({'resCode':'0'}) if request.method == 'POST': ...
這是一種前面文章Django 2.1.7 類視圖中,在介紹類視圖的時候說明了一個視圖函數如何在同一個url情況下處理GET以及POST請求。 那麼這裡就是增加上了同時處理ajax的請求。
if request.is_ajax(): ... return JsonResponse({'resCode':'0'})
其實如果沒有那麼多不同類型的請求,直接根據ajax的請求類型繼續GET和POST處理即可。
類視圖:同時存在GET,POST,Ajax處理
class TestView(View): def get(self,request): if self.request.is_ajax: pass else: pass def post(self,request): if self.request.is_ajax: pass else: pass
在類視圖上,已經將對各個方法進行了拆分處理,拆分請求的源碼內容如下:
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
所以,對於ajax只需要在不同方法下進行一個判斷即可。