如何在Django模态中将值从forloop传递给url?

时间:2019-05-22 15:46:53

标签: javascript jquery django bootstrap-4

我有一个带按钮及其各自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值?

1 个答案:

答案 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>