CSRF 中间件 - 更改 csrf_token 输出(从 xHTML 到 HTML)

发布于 2024-08-20 10:55:21 字数 542 浏览 7 评论 0原文

我的 django csrf 中间件有问题...... 当我使用模板标签 csrf_token 时,我得到这个输出:

<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='6bda3605af31dd8595d2a67d0dda827b' /></div>

但我想要这个输出(HTML 而不是 xHTML:

<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='6bda3605af31dd8595d2a67d0dda827b'></div>

我尝试查看 django.middleware.csrf.CsrfViewMiddleware 中的代码,但没有成功:(

那么,如何更改输出csrf_token 标签

I've a problem with django csrf middleware...
when I use the template tag csrf_token I get this output:

<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='6bda3605af31dd8595d2a67d0dda827b' /></div>

but I want this output (HTML not xHTML:

<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='6bda3605af31dd8595d2a67d0dda827b'></div>

I tryed to see the code in django.middleware.csrf.CsrfViewMiddleware but with no success :(

So, how can I change the output fo csrf_token tag?

tanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

听风吹 2024-08-27 10:55:21

这是我对问题的解决方法。

{% with csrf_token as csrf_token_clean %}{{ csrf_token_clean }}{% endwith %}

在您的模板中,这将仅返回令牌密钥,因此您可以编写自己的有效 HTML 输入标记,如下所示。

<input type="hidden" name="csrfmiddlewaretoken" value="{% with csrf_token as csrf_token_clean %}{{ csrf_token_clean }}{% endwith %}" >

来源: http://www.phptodjango.com/ 2010/07/django-csrftoken-template-tag-fix.html

Here is my fix to the problem.

{% with csrf_token as csrf_token_clean %}{{ csrf_token_clean }}{% endwith %}

In your template, this will return only the token key, so you can write your own valid HTML input tag, like this.

<input type="hidden" name="csrfmiddlewaretoken" value="{% with csrf_token as csrf_token_clean %}{{ csrf_token_clean }}{% endwith %}" >

Source: http://www.phptodjango.com/2010/07/django-csrftoken-template-tag-fix.html

っ左 2024-08-27 10:55:21

解决方案其实很简单:

<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">

{% with %} 构造没有任何意义。

The solution is actually very simple:

<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">

There is no point in {% with %} construct.

来世叙缘 2024-08-27 10:55:21

你必须去编辑 django.template.defaulttags.py:在第 48 行有标签的输出,你可以根据需要更改它。

请注意,这是一项开发功能,因此可能会发生更改 - 更新 Django 可能会删除您的更改!。
另外,请花时间寻找有关此特定问题的票:我提出的解决方案将可能会解决您的问题,但我认为“官方”修复会好得多。

You have to go and edit django.template.defaulttags.py: At line 48 there is the output of the tag, and you may change it as you wish.

Please note that this is a development feature, and as such, subject to change - updating Django will likely remove your change!.
Also, please take the time to go look for a ticket about this particular problem: the solution I proposed will likely fix your problem, but I think that an “official” fix would be a lot nicer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文