Django 将 CSRF 令牌输出为对象而不是值

发布于 2024-08-22 05:32:12 字数 648 浏览 6 评论 0原文

我在 Django 中以简单的 POST 形式处理 CSRF 令牌。该模板生成以下 CSRF 输出,而不是输出令牌的值:

<input type='hidden' name='csrfmiddlewaretoken' value='{'csrf_token':django.utils.functional.__proxy__ object at 0x1255690>}' />

我在模板中使用 {% csrf_token %},如何解决此问题? (我正在使用 Django 1.2)

编辑:确切的表单代码是:

<form name="foo" action="url" method="POST">
   {% csrf_token %}

   <select>
       {% for key, account in accounts.items %} 
           <option value="{{ key }}">{{ account }}</option>
       {% endfor %}
   </select>
<input type="submit">    
</form>

I am struggling with the CSRF token in a simple POST form in Django. The template generates the following CSRF output instead of outputting the value of the token:

<input type='hidden' name='csrfmiddlewaretoken' value='{'csrf_token':django.utils.functional.__proxy__ object at 0x1255690>}' />

I am using {% csrf_token %} in the template, how can I fix this? (I am using Django 1.2)

EDIT: the exact form code is:

<form name="foo" action="url" method="POST">
   {% csrf_token %}

   <select>
       {% for key, account in accounts.items %} 
           <option value="{{ key }}">{{ account }}</option>
       {% endfor %}
   </select>
<input type="submit">    
</form>

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

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

发布评论

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

评论(1

迷鸟归林 2024-08-29 05:32:12

我找到了原因:在settings.py中我添加了:django.middleware.csrf.CsrfViewMiddleware
但不是:django.middleware.csrf.CsrfResponseMiddleware

因此,在 django.middleware.csrf.CsrfViewMiddlewaredjango.middleware.common.CommonMiddleware 之后添加 django.middleware.csrf.CsrfResponseMiddleware 就可以了去。

I found the cause: in settings.py I had added: django.middleware.csrf.CsrfViewMiddleware
but not: django.middleware.csrf.CsrfResponseMiddleware.

So add django.middleware.csrf.CsrfResponseMiddleware after django.middleware.csrf.CsrfViewMiddleware and django.middleware.common.CommonMiddleware and you are good to go.

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