Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用post方法提交表单时出错_Python_Django_Api_Django Csrf - Fatal编程技术网

Python 使用post方法提交表单时出错

Python 使用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令牌丢失或不正确。要传递令牌以提交不在django模板上的表单

views.py

form.html

。。。。
登记
....
....
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%}在您必须渲染模板时使用。但是,我没有使用任何模板。我试过了,不管用。