Django:如何在javascript函数中为{%url%}标记提供参数,这些参数将在FOR循环中使用?

时间:2017-04-17 09:39:45

标签: javascript python django

我尝试在Django ListView模板中创建一个带有javascript“location.href”属性的按钮。

{% for item in object_list %} 
   <div class="clear_float"> 
    <h2><a href = "{% url 'photo:album_detail' item.id %}">{{ item.title }}</a></h2>
    &emsp;<b><i>{{ item.description }}</i></b> 
    <p style="display:inline" class="editbutton">
    <b><button onclick="photoAdd()">Add Photo</button></b>
    {% if item.author == request.user %}
    <b><button onclick="albumEdit()">Edit</button></b>
    <b><button onclick="albumDelete()">Delete</button></b>
    {% endif %}
    </p>
    </div>
{% endfor %}

而且albumEdit()和albumDelete()编码如下。

function albumEdit(){
    location.href="{% url 'photo:album_edit' object.id %}";
}
function albumDelete(){
    location.href="{% url 'photo:album_delete' object.id %}";
}

{% url 'photo:album_edit' object.id %}返回“photo / object.id / edit /”

问题是,我猜,ListView返回object_list,因此javascript函数用于FOR循环中的item对象。 我尝试用item.id替换object.id,但它没有用。

所以我也尝试了另一种方法来为javascript函数提供一个参数,如下所示。

<b><button onclick="albumEdit({% url 'photo:album_update' item.id %})">Edit</button></b>

和javascript

function albumEdit(arg){
    var address = arg;
    location.href=encodeURI(address);
}

因为我不太了解javascript,它也没有用。 我将不胜感激任何建议和帮助。

谢谢:D

2 个答案:

答案 0 :(得分:1)

我用输入的javascript代码将其修改为onclick属性,如

<b><button onclick="location.href='{% url 'photo:album_edit' item.id %}'">Edit</button></b>

答案 1 :(得分:0)

您可以在js onclick函数中传递参数:

function albumEdit(href_url){
    location.href=href_url;
}

并使用它来进行重定向:

{{1}}