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只需要在不同方法下進行一個判斷即可。