我正在使用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解决了这个问题,但无法解决获取绝对网址的问题。
答案 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 }}" >