1. 程式人生 > >Django在同一個檢視中要處理ajax請求遇到的一些坑

Django在同一個檢視中要處理ajax請求遇到的一些坑

在寫專案中遇到的一些ajax的坑,在這裡做一下記錄

一、先放一個完整的前,後端示例

   $("#bTinvite").click(function(){
       inviTtemail = $("#invitefriends").val();
//       alert(inviTtemail);
       $.ajax({
            'url':'/workbench/',
            'type':'post',
            'data':{'inviTemail':inviTtemail},

// 後端返回到前端值的格式
            'datatype':'json',

// ajax 預設'async': 'true'非同步處理
            'async': 'true',  
            success:(function(data){
                if (data.res == 1){
                    alert('傳送成功');
                    // 跳轉頁面
                    window.location.href='/workbench/';  
                }
                else{
                    alert('請輸入正確的郵箱');
                };
           })
       })
    });
views的ajax接受方法
if request.is_ajax():
         role = request.POST['id']
         message = Personas(role=role)
         message.save()
         return
     else:
         #查詢出role名稱
         personas = Personas.objects()
         role_list = []
         role_dict = {}
         for i in personas:
             roles = i.role
             role_list.append(roles)
         #生成字典型別資料
         num = 'a'
         for i in range(0,len(role_list)):
             role_dict[str(num)]=role_list[i]
             num+='a'
         result = information_show(request)
         return render(request, 'created.html',role_dict)

二、button,type = "submit" 和 Ajax 不能同時使用,否則Ajax呼叫不成功

button按鈕的type屬性的預設值是submit,有提交form表單的功能。換成span標籤可行,但是還要改樣式,直接更改button的type為button

<button>點我提交</button> →  <button type="button">點我提交</button>

三、在一個檢視中如果要同時存在GET,POST,Ajax處理

def workbench(request):
    if request.method == 'GET':
        ...

    #要注意Ajax處理要放在中間
    if request.is_ajax():
        ...
        return JsonResponse({'res':'建立使用者畫像成功'})


    if request.method == 'POST':
        ...