javascript post django表单给出csrf错误

javascript post django表单给出csrf错误,javascript,django,forms,Javascript,Django,Forms,我有一个html表单,如: <form id="comment" action="{% url "url_name" ur.id %}" method="post">{% csrf_token %} <textarea required="required" maxlength="255" rows="4" class="form-control" name="comment"> </textarea> <button class

我有一个html表单,如:

<form id="comment" action="{% url "url_name" ur.id %}" method="post">{% csrf_token %}
    <textarea required="required" maxlength="255" rows="4" class="form-control" name="comment">
    </textarea>
    <button class="btn btn-default" onclick="add_comment(event)">Comment</button>
</form>
我只是从django视图中呈现一个模板


当我看到请求网络时,csrf令牌和注释作为请求负载传递

我假设您正在使用AJAX发布表单。使用AJAX使用Django发布表单时,在提交AJAX请求之前,您需要在Javascript中添加以下内容:

$.ajaxSetup({ 
    beforeSend: function(xhr, settings) {
        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 = jQuery.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;
        }
        if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
            // Only send the token to relative URLs i.e. locally.
            xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
        }
    } 
});
$.ajaxSetup({
发送前:功能(xhr、设置){
函数getCookie(名称){
var-cookieValue=null;
if(document.cookie&&document.cookie!=''){
var cookies=document.cookie.split(“;”);
对于(变量i=0;i
更多信息可在

中找到,这表明您必须包含凭据,以便CSRF cookie随请求一起发送

fetch(url, {method: method, body: form_data, credentials: 'include'})

给我们您的javascript代码和视图。@SancaKembang我已经更新了问题您遇到的问题与CSRF令牌没有作为表单提交的一部分传递有关。我对fetch不太熟悉,因为我一直使用AJAX,但这就是你出错的地方。对不起,我帮不上忙了。
fetch(url, {method: method, body: form_data, credentials: 'include'})