CSRF 中间件 - 更改 csrf_token 输出(从 xHTML 到 HTML)
我的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是我对问题的解决方法。
在您的模板中,这将仅返回令牌密钥,因此您可以编写自己的有效 HTML 输入标记,如下所示。
来源: http://www.phptodjango.com/ 2010/07/django-csrftoken-template-tag-fix.html
Here is my fix to the problem.
In your template, this will return only the token key, so you can write your own valid HTML input tag, like this.
Source: http://www.phptodjango.com/2010/07/django-csrftoken-template-tag-fix.html
解决方案其实很简单:
{% with %}
构造没有任何意义。The solution is actually very simple:
There is no point in
{% with %}
construct.你必须去编辑 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.