3

django csrf ミドルウェアに問題があります... テンプレート タグ csrf_token を使用すると、次の出力が得られます。

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

しかし、私はこの出力が欲しいです(xHTMLではなくHTML:

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

django.middleware.csrf.CsrfViewMiddleware のコードを見ようとしましたが、成功しませんでした:(

では、csrf_token タグの出力を変更するにはどうすればよいですか?

タンク

4

3 に答える 3

3

ここに問題に対する私の修正があります。

{% 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

于 2010-07-31T18:56:29.860 に答える
3

解決策は実際には非常に簡単です。

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

構成に意味はありません{% with %}

于 2011-10-22T01:35:41.023 に答える
1

django.template.defaulttags.py に移動して編集する必要があります: 48 行目にタグの出力があり、必要に応じて変更できます。

これは開発中の機能であり、変更される可能性があることに注意してください。Django を更新すると、変更が削除される可能性があります。
また、この特定の問題に関するチケットを探してください。私が提案した解決策で問題が解決する可能性がありますが、「公式」の解決策の方がはるかに優れていると思います。

于 2010-01-31T16:03:35.337 に答える