简体   繁体   English

Django Ajax 发布请求

[英]Django Ajax Post request

Error is: Forbidden (CSRF token missing or incorrect.): /tracker/错误是:禁止(CSRF 令牌丢失或不正确。):/tracker/

i try a URL: tracker, tracker/, /tracker/, http://127.0.0.1:8000/tracker/'我试试 URL: tracker, tracker/, /tracker/, http://127.0.0.1:8000/tracker/'

I'm new to Django.我是 Django 的新手。 I try many URL and I also try a Moesif CORS(Extention)我尝试了很多 URL 并且我还尝试了 Moesif CORS(扩展)

console Error is: jquery-3.5.1.js:10099 POST http://127.0.0.1:8000/tracker/ 403 (Forbidden) send @ jquery-3.5.1.js:10099 ajax @ jquery-3.5.1.js:9682 (anonymous) @ (index):276 dispatch @ jquery-3.5.1.js:5429 elemData.handle @ jquery-3.5.1.js:5233控制台错误是:jquery-3.5.1.js:10099 POST http://127.0.0.1:8000/tracker/ 403(禁止)发送@ jquery-3.5.1.js:10099 Z2705A83A5A0659CCE34583972.51@jquery-3.5.1.js:10099 Z2705A83A5A0659CCE3458393.51. :9682(匿名)@(索引):276 调度@jquery-3.5.1.js:5429 elemData.handle @jquery-3.5.1.js:5233

urls.py file : urls.py 文件

urlpatterns = [
    path('', views.index, name="index"),
    path('preview/<int:id>/', views.preview, name="preview"),
    path('checkout/', views.checkout, name="checkout"),
    path('tracker/', views.tracker, name="tracker"),
   
]

console.log('working') console.log('工作')

$('#trackerForm').submit(function(event){

    $('#items').empty();

    var formdata = {

        'orderId' : $('input[name=order_id]').val(),
        'email' : $('input[name=email]').val(),
        'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val()

    };

    $.ajax({

        type : 'POST',
        url : 'http://127.0.0.1:8000/tracker/',
        data:'formdata',
        encode: true
    })

    .done(function(data){

        console.log(data)
        updates = JSON.parse(data);
            if (updates.length > 0 & updates != {}) {
                for (i = 0; i < updates.length; i++) {
                    let text = updates[i]['text'];
                    let time = updates[i]['time'];
                    mystr = `<li class="list-group-item d-flex justify-content-between align-items-center">
                    ${text}
                    <span class="badge badge-primary badge-pill">${time}</span>
                </li>`
                    $('#items').append(mystr);
                }
            } else {
                mystr = `<li class="list-group-item d-flex justify-content-between align-items-center">
                    Sorry, We are not able to fetch this order id and email. Make sure to type correct order Id and email</li>`
                $('#items').append(mystr);
            }
    })

    event.preventDefault();

})

Views.py视图.py

def tracker(request):

   if request.method == "POST":
      order_id = request.POST.get('order_id')
      email = request.POST.get('email')
      

      try:
         order = Order.objects.filter(order_id=order_id, email=email)
         if len(order) > 0:
            update = updateOrder.objects.filter(order_id=order_id)
            updates = []
            for item in update:
               updates.append({'text':item.order_desc, 'time':item.timestamp})
               responce = json.dumps(updates, default=str)
               print(responce)
            return HttpResponse(responce) 
         else:
            return HttpResponse({})
      except Exception as e:
         return HttpResponse({})

   
   context={}
   return render(request, 'cart/tracker.html', context)

Remove the quotes around 'formdata' -> formdata删除'formdata' -> formdata周围的引号

 formdata= {
   ... 
 }
 ...
 $.ajax({

        type : 'POST',
        url : 'http://127.0.0.1:8000/tracker/',
        data: formdata,
        encode: true
    })

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM