Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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
Javascript 如果脚本位于静态文件夹中,则csrf变量无效_Javascript_Ajax_Django_Django Templates - Fatal编程技术网

Javascript 如果脚本位于静态文件夹中,则csrf变量无效

Javascript 如果脚本位于静态文件夹中,则csrf变量无效,javascript,ajax,django,django-templates,Javascript,Ajax,Django,Django Templates,javascript: $('.delete').click(function() { if (confirm("Are you sure to delete?")) { var csrf_token = $("#csrf_token").val(); $.ajax({ // create an AJAX call... data:{ csrfmidd

javascript:

   $('.delete').click(function() {  
          if (confirm("Are you sure to delete?")) {      
          var csrf_token = $("#csrf_token").val();    
          $.ajax({ // create an AJAX call...
            data:{
                csrfmiddlewaretoken: ('{{csrf_token}}'),
                delete:true
            },
            type:'POST',
            url: '/feed_list/', 
            cache:false,
            success: function() { 
                window.location.href = window.location;
            }
        });
        return false;
      }
    });

这是我的java脚本函数,用于调用views.py中执行删除函数的方法。删除函数工作正常,问题是此javascript函数现在位于当前html页面中。如果我将此函数移动到静态文件夹-->scripts-->custom.js,将抛出403错误页。
CSRF验证失败。请求中止。
我正在以java脚本的形式传递csrf令牌。我想解决这个问题。需要建议

它不会工作,因为django服务器不会呈现js文件。 以下是解决此问题的方法:

添加jquery插件:

在js文件中使用此选项可获取csrf令牌:

csrfmiddlewaretoken: $.cookie('csrftoken'),

您已经定义了
csrf\u令牌
,因此需要在ajax请求中传递它:

data:{
            csrfmiddlewaretoken: csrf_token,
            delete:true
        }
但我不知道您的输入是什么样子的,我将令牌定义为

token = $('input[name="csrfmiddlewaretoken"]').val()
在基本模板中传递
{%csrf_token%}
哪个html代码:

<input type="hidden" name="csrfmiddlewaretoken" value="your_token">


但是如果我将js移动到静态文件夹,其他页面中的脚本可以工作,问题是有两个页面。@user2439275可能其他脚本没有使用模板标记。@DanielRoseman这意味着答案是完美的解决方案,除了这是不可能的@user2439275我的解决方案有帮助吗?如果没有,请解释错误