问题描述
我有下面的代码,它在 django 1.11 中正常工作,升级后它在 django 2.0 中工作,但由于某种原因,它在 django 2.1 到 3.1.4 的更高版本中不起作用。
<button
type="button"
class="btn btn-sm btn-secondary"
id="dodaj-poziv-za-clanove-tijela"
data-container="body"
data-toggle="popover"
title="Da li želite da dodate članove tijela u sastanak ?"
data-content=
"<form method='POST' action='{% url 'poziv_clanovi_dodaj' poziv_id=poziv.id %}'>
<button type='submit' class='btn btn-success btn-sm clanovi float-right'>Dodaj</button>
{% csrf_token %}
</form>"
> Dodaj poziv za članove tijela</button>
在浏览器中,此按钮对于工作 django 1.11 和 2.0 版本看起来很正常,但在那些不是 2.0 以上的每个版本中,包括 2.1、2.2 和 3.0、3.1,它的按钮都有“>”,提交后我得到 csrf 令牌错误
解决方法
我在这里找到了解决方案How to use Django {% csrf_token %} in bootstrap popver
奇怪的是 {% csrf_token %} 可以在 django 1.11 和 django 2.0 中使用,但是从 django 2.1 开始,您必须使用
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}" >
代替
现在我的工作弹出框看起来像:
<button
type="button"
class="btn btn-sm btn-secondary"
id="dodaj-poziv-za-clanove-tijela"
data-container="body"
data-toggle="popover"
title="Da li želite da dodate članove tijela u sastanak ?"
data-content=
"<form method='POST' action='{% url 'poziv_clanovi_dodaj' poziv_id=poziv.id %}'>
<button type='submit' class='btn btn-success btn-sm clanovi float-right'>Dodaj</button>
<input type='hidden' name='csrfmiddlewaretoken' value='{{ csrf_token }}' >
</form>
"
>Dodaj poziv za članove tijela</button>