我是django的新手,我试图通过点击网页上的按钮从views.py中启动简单的函数。我就是这么做的:
HTML:
<form method="post">{% csrf_token %}
<button type="submit" class="btn btn-circle btn-primary btn-xl" id="add_address_button"><i class="fa fa-check"></i></button>
</form>
$('#add_address_button').click( function() {
$.post("adres/add_address_button_action/", function () {
alert('OK');
});
});
urls.py
url(r'^adres/add_address_button_action/$',views.add_address_button_action, name = 'add_address_button_action'),
views.py
def add_address_button_action(request):
adres = get_object_or_404(Adres, id =2)
return render(request, 'serwis/address_detail.html', RequestContext(request, {'address_detail_zmienna': adres}))
航站楼提供的资料:
Forbidden (CSRF token missing or incorrect.): /adres/add_address_button_action/
...
"POST /adres/add_address_button_action/ HTTP/1.1" 403 2274
我在views.py中尝试了不同的返回方式:
return render_to_response('serwis/address_detail.html', RequestContext(request, {'address_detail_zmienna': adres}))
return redirect('serwis/address_detail.html', {'address_detail_zmienna': adres})
但它们都不起作用。
如果有人能帮我解决这个问题,我会非常感激的。我读过很多关于这个问题的话题,但大多数都过时了--而且没有帮助。
亲切的问候
发布于 2016-03-16 21:03:36
在一天结束时,我一直在学习本教程:
而且效果很好。
谢谢大家的关注。
发布于 2016-03-15 20:40:04
看起来您没有将CSRF令牌传递给服务器。看看医生们。
您需要预先配置您的jQuery以在您提出的每个AJAX请求的头中传递csrf令牌,或者您需要显式地将CSRF令牌作为数据传递给$.post()函数。
详细代码可在上述链接文档中找到。
发布于 2016-03-16 06:42:09
我建议在chrome开发工具中查看:
这里的问题与js / html / jQuery有关。如果使用带有submit类型的按钮,也不需要添加单击处理程序。按钮带有type="submit"
触发器post请求..。第二个post请求(由jQuery发送)看起来是多余的,并且发送时没有所需的令牌(否则您将传递它)。
我建议使用“action”属性:
<form method="post" action="adres/add_address_button_action/">
{% csrf_token %}
<button type="submit" class="btn btn-circle btn-primary btn-xl" id="add_address_button"><i class="fa fa-check"></i></button>
</form>
现在应该管用了..。
https://stackoverflow.com/questions/36021488
复制相似问题