【问题标题】:CSRF token missing or incorrect, even after including the token tagCSRF 令牌丢失或不正确,即使在包含令牌标签之后也是如此
【发布时间】:2017-11-15 12:35:39
【问题描述】:

我收到“CSRF 令牌丢失或不正确”错误,但我已经在 Web 表单中添加了 {% csrf_token%} 标记。知道为什么我仍然面临这个错误吗?

def index(request):
    if request.method == 'POST':
        form = RequestForm(request.POST)
        if form.is_valid():
            form.save()
            return render(request, 'index.html')
    else:
        form = RequestForm()
    return render(request, 'index.html', {'form': form})`

我无法发布模板,但我使用了如下行所示的令牌

<form id="reqForm" action="" method="POST" enctype="text/plain">{% csrf_token %}

【问题讨论】:

  • 如果您查看表单的源代码,是否可以看到带有 csrf 令牌值的隐藏输入框?
  • 是的,现在我可以,在删除 enctype 属性后。谢谢。

标签: python django django-models django-forms django-templates


【解决方案1】:

您的问题似乎是您的表单中的enctype="text/plain"。 CSRF 保护假设 post 数据是表单编码的。

最简单的解决方法是完全删除它,相当于:

enctype="enctype=application/x-www-form-urlencoded"

如果您在表单中上传文件,您将使用:

enctype="multipart/form-data"

【讨论】:

  • 是的,我在我的网络表单中上传一个文件,知道我应该如何在后端处理吗?我在我的模型中使用 models.FileField()。
  • 这真的是一个单独的问题。我会从the docs 开始,如果你遇到困难,我会提出一个新问题。
猜你喜欢
  • 2021-07-14
  • 2011-08-20
  • 2011-12-26
  • 2014-03-29
  • 1970-01-01
  • 2014-12-25
  • 2019-03-29
  • 2021-11-13
  • 2012-04-20
相关资源
最近更新 更多