向Django发送Ajax请求

时间:2013-11-27 17:20:40

标签: python ajax django

我是Ajax和Django的新手,我正在尝试向一个名为'update'的函数发送一个简单的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);
});

这是它应该得到的观点:

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显示它已置于表单中,但我的请求仅在on click函数上调用

1 个答案:

答案 0 :(得分:1)

您在ajax请求中的网址“/ page / update /”与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'),
)