Python 使用post方法提交表单时出错
错误:CSRF令牌丢失或不正确。要传递令牌以提交不在django模板上的表单 views.py form.htmlPython 使用post方法提交表单时出错,python,django,api,django-csrf,Python,Django,Api,Django Csrf,错误:CSRF令牌丢失或不正确。要传递令牌以提交不在django模板上的表单 views.py form.html 。。。。 登记 .... .... CSRF(跨站点请求伪造)保护的全部目的是防止提交不由同一站点提供的表单。如果您确实需要使用来自不同站点的表单提供html页面,则必须禁用CSRF保护。如果您只需要手动创建表单并通过Django视图从同一站点提供表单,则可以使用JavaScript填充csrfmiddlewaretoken字段。首先,按照Django文档中的描述从cookie中提
。。。。
登记
....
....
CSRF(跨站点请求伪造)保护的全部目的是防止提交不由同一站点提供的表单。如果您确实需要使用来自不同站点的表单提供html页面,则必须禁用CSRF保护。如果您只需要手动创建表单并通过Django视图从同一站点提供表单,则可以使用JavaScript填充csrfmiddlewaretoken
字段。首先,按照Django文档中的描述从cookie中提取令牌:然后您可以填充该字段
JQuery的示例:
$(function() {
// using jQuery
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = $.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
var csrftoken = getCookie('csrftoken');
$('input[name=csrfmiddlewaretoken]').attr('value', crsftoken);
});
$(函数(){
//使用jQuery
函数getCookie(名称){
var-cookieValue=null;
if(document.cookie&&document.cookie!=''){
var cookies=document.cookie.split(“;”);
对于(变量i=0;i
CSRF(跨站点请求伪造)保护的全部目的是防止提交不由同一站点提供的表单。如果您确实需要使用来自不同站点的表单提供html页面,则必须禁用CSRF保护。如果您只需要手动创建表单并通过Django视图从同一站点提供表单,则可以使用JavaScript填充csrfmiddlewaretoken
字段。首先,按照Django文档中的描述从cookie中提取令牌:然后您可以填充该字段
JQuery的示例:
$(function() {
// using jQuery
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie !== '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = $.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
var csrftoken = getCookie('csrftoken');
$('input[name=csrfmiddlewaretoken]').attr('value', crsftoken);
});
$(函数(){
//使用jQuery
函数getCookie(名称){
var-cookieValue=null;
if(document.cookie&&document.cookie!=''){
var cookies=document.cookie.split(“;”);
对于(变量i=0;i
在您的表单中使用{%csrf\u token%}:
<form>
{% csrf_token %}
<input ... >
</form>
{%csrf_令牌%}
在您的表单中使用{%csrf\u token%}:
<form>
{% csrf_token %}
<input ... >
</form>
{%csrf_令牌%}
我禁用它或使用此功能。对吗?如果您在同一个Django站点上通过Django视图(例如TemplateView
CBV)提供现成的html,那么JS将起作用。否则,您必须禁用CSRF保护并使用其他保护机制,例如访问令牌。整个网页不是此django应用程序的一部分。我应该如何以及在何处使用此代码段?实际上,这个表单出现在单击事件中,并出现在js文件中。Django已经强化了CSRF保护,旨在防止您试图完成的任务。在您的情况下,请禁用CSRF保护并使用其他方法防止未经授权的表单提交。我可以禁用它或使用此功能。对吗?如果您在同一个Django站点上通过Django视图(例如TemplateView
CBV)提供现成的html,那么JS将起作用。否则,您必须禁用CSRF保护并使用其他保护机制,例如访问令牌。整个网页不是此django应用程序的一部分。我应该如何以及在何处使用此代码段?实际上,这个表单出现在单击事件中,并出现在js文件中。Django已经强化了CSRF保护,旨在防止您试图完成的任务。在您的情况下,请禁用CSRF保护并使用其他方法防止未经授权的表单提交。{%CSRF_token%}在您必须呈现模板时使用。但是,我没有使用任何模板。我已经试过了,但不起作用。{%csrf_token%}在您必须渲染模板时使用。但是,我没有使用任何模板。我试过了,不管用。