【问题标题】:Django csrf fails with jquery validateDjango csrf 因 jquery validate 而失败
【发布时间】:2013-11-06 09:47:58
【问题描述】:

即使我在 HTML 模板中包含 csrf 令牌,我在使用 JQuery 表单验证和 Django inside modal 时也遇到了以下问题。如果我提交表单而不使用 JQuery 验证它就可以了。

Forbidden (403)
CSRF verification failed. Request aborted.

在服务器端我使用 Django 表单验证,没什么特别的。

提前谢谢你:)

这是我的代码:

html

<form class="form-inline" id="add-subtitle-modal" action="/add_subtitle/" role="form" method="post" enctype="multipart/form-data">
    {% csrf_token %}

<div class="form-group">
      {{object.description}}
</div>

...

<button class="btn btn-danger" type="submit">save</button>

js

$('#add-subtitle-modal').validate({
        rules: {
...
}

etc

        submitHandler: function(form) {
            var $form = $(form);
            var $inputs = $form.find("input, select, button, textarea");
            $inputs.prop("disabled", true);

            //let the backend to manage submiting

            $form.submit();
        }

【问题讨论】:

  • 对不起,伙计。我盲目地认为涉及 ajax,我的错。关于您的问题,您能否检查一下 csrf 令牌是否与所有 POST 输入一起发送?
  • 我该怎么做?因为我不能打印 request.body 因为服务器禁止它。在视图中呈现它的 csrf 令牌。 :(
  • 您可以简单地打开 chrome dev 控制台并查看已发送的帖子数据..
  • 已发送。我还在views.py中添加了 ctx.update(csrf(request)) 并且仍然禁止。好像是个鬼:(
  • 是的,看起来很奇怪,你能把完整的代码放在github上吗?

标签: jquery django validation csrf


【解决方案1】:

这是我的错。当我在提交前将输入设置为无效时,csrf 也被设置为禁用。因此,我认为它没有提交到服务器。我认为这是问题所在,因为在我修改了要禁用的字段后它才起作用。

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 2012-02-24
    • 2020-01-17
    • 2012-09-08
    • 2012-12-27
    • 2015-06-02
    • 1970-01-01
    相关资源
    最近更新 更多