如何在bootstrap popover中使用Django {%csrf_token%}

时间:2013-07-04 19:07:34

标签: javascript python django twitter-bootstrap popover

我正在使用bootstrap popover弹出一个小表单。 如何让{%csrf_token%}在javascript弹出窗口内工作。

$('.delete_btn').popover({ 
      html: 'true', placement: 'top', title: 'Are you sure?', 
      content: '<form action="{{object.get_delete_url}}" method="post">
               {% csrf_token %}<div><input type="hidden" name="next" value="" />
               <input type="submit" class="btn btn-danger" value="Confirm" />
               </div></form>' 
    });

提前谢谢大家

编辑:

现在我已经用csrf_token解决了这个问题,但无法解决获取绝对网址的问题。

1 个答案:

答案 0 :(得分:1)

我几天前遇到了同样的问题。你说你找到了答案,但我想我也可以在这里发布任何可能偶然发现这个问题的人。

当django将csrf令牌标记放入html时,它会创建一个不可见的html标记。我遇到的问题是,它使用单引号:

<input type='hidden' name='csrfmiddlewaretoken' value='sometokeninhere' />

这对我来说有点奇怪,因为双引号是标准的,我目前正在研究这些单引号背后的原因。我遇到的另一个问题是我放入popover的django变量(即{{ form.variable1 }})被渲染为带双引号的输入标签。失败。因此,我使用的修复是从上下文中获取csrf标记变量并使用它来创建我自己的隐藏输入,将{% csrf_token %}替换为:

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