我有一个带按钮及其各自pk值的forloop。
{% for obj in all_objects %}
<button data-toggle="modal" data-id="{{ obj.pk }}" data-target="#myModal" class="open-my-modal"> {{ obj }} </button>
{% endfor %}
在 myModal 中,我有一个pk = 0的网址,当选择一个对象时可以动态更改。
<a id="doSomething" href="{% url 'myapp:do_something' pk=0 %}">Do something</a>
我尝试了以下操作,但找不到关键字参数'{'pk':``}''的'do_something'反向错误。
{% block jquery %}
<script>
$(document).on("click", ".open-my-modal", function () {
// get the obj pk
var objPk = $(this).data('id'); // this properly returns the pk value
// pass obj pk to the django path variable 'pk'
document.getElementById("doSomething").setAttribute("href", "{% url 'myapp:do_something' pk=objPk %}");
</script>
{% endblock jquery %}
如何将href内的django路径变量(pk)动态设置为选定的obj.pk值?
答案 0 :(得分:0)
尝试从另一个角度解决问题。无需尝试在javascript中生成href,而要利用django的模板,只需将href替换为data属性即可。
{% for obj in all_objects %}
<button data-toggle="modal" data-id="{{ obj.pk }}" data-target="#myModal" data-do-something-url="{% url 'myapp:do_something' pk=obj.pk %}" class="open-my-modal"> {{ obj }} </button>
{% endfor %}
然后用JS
<script>
$(document).on("click", ".open-my-modal", function (e) {
var trigger = $(e.relatedTarget)
document.getElementById("doSomething").setAttribute("href", trigger.data('do-something-url')
</script>