Skip to main content
 首页 » 编程设计

python之向 Django 发送 Ajax 请求

2025年05月04日34mq0036

我是 Ajax 和 Django 的新手,我正在尝试向名为“更新”的函数发送一个简单的 ajax 请求。但我也不希望实际的 url 在发送请求时在浏览器中发生变化(例如 www.website.com/page/即使使用 ajax 请求也将保持不变)。基本上,当我尝试提交 ajax 请求时,我从服务器收到 403 错误。我相信我的部分问题可能是 urls.py 中的 url 映射...

这是我的 ajax 请求:

$.ajax({ 
   type : "POST", 
   url : "/page/update/", 
   data : { 
        data : somedata, 
    }, 
}).done(function(data){ 
        alert(data); 
}); 

这是它应该得到的 View :

def update(request): 
    if request.is_ajax(): 
        message = "Yes, AJAX!" 
    else: 
        message = "Not Ajax" 
 
    return HttpResponse(message) 

这是我的 urls.py

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
    url(r'^update/$', views.update, name='update'), 
) 

提前感谢您的帮助。

我更深入地研究了错误和我需要包含的错误状态 {% csrf_token %} 发回帖子时。本例 how to get POST data in django 1.3显示它已放入表单中,但我的请求仅在点击功能时调用

请您参考如下方法:

ajax 请求“/page/update/”中的 url 与 urls.py 不匹配。这就是您收到 404 错误页面的原因。我会告诉你我的线路代码,你可以试试这个。

 $.ajax({ 
    type: "POST", 
    url: "/update/" 
    data: { 
        csrfmiddlewaretoken: '{{ csrf_token }}', 
        data : somedata, 
    }, 
    success: function(data) { 
        alert(data); 
    }, 
    error: function(xhr, textStatus, errorThrown) { 
        alert("Please report this error: "+errorThrown+xhr.status+xhr.responseText); 
    } 
}); 

/*'{{ csrf_token }}'是django专用的*/

这是观点:

from django.views.decorators.csrf import csrf_exempt 
@csrf_exempt //You can use or not use choice is left to you 
def update(request): 
    if request.is_ajax(): 
        message = "Yes, AJAX!" 
    else: 
        message = "Not Ajax" 
 
    return HttpResponse(message) 

这是 urls.py

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
    url(r'^update/$', views.update, name='update'), 
)