Django:在模板中组合变量和HTML id

时间:2016-11-19 04:48:31

标签: javascript python html django templates

我正在寻找通往" concatene"使用Javascript变量的django对象列表(通过views.py中的get_queryset获取)。然后将它们连接到模型对象的字段中。

我的模型是博客文章,包含post_title字段(charfield)。 在我的index.html中,我有一个id =" 1"或id =" 2"对应于页面的索引和onClick =" displayPostContentOnPageButtonCliked(this.id)"属性。

我的index.html检索名为all_post_by_date的context_object_name中的所有post对象。 在我的index.html中,我想在警告对话框中显示与单击按钮对应的帖子标题,如:

<script>
    function displayPostContentOnPageButtonCliked(page_button_clicked_id){
        var all_posts_by_date = "{{all_posts_by_date.page_button_clicked_id.post_title}}";
        alert(all_posts_by_date);
    }
</script>

但这不起作用。我尝试添加过滤器或创建我自己的过滤器(称为get_index,但只能设法得到:all_posts_by_date | get_index:page_button_clicked_id并且无法组合.post_title部分。 我的问题是:如何让{{all_posts_by_date.page_button_clicked_id.post_title}}工作,并警告&#34;帖子3&#34;点击按钮3时? 谢谢你!

1 个答案:

答案 0 :(得分:2)

两种解决方案:(1)在调用JS函数时将您想要的数据发送到JS函数。

<script>
    function showPostTitle(post_title){
        alert(post_title);
    }
</script>

. . .
{% for x in all_posts_by_date %}
<div id='blog-post-{{ x.id }}' on-click="showPostTitle('{{ x.post_title }}')">
. . . 
{% endfor %}

或者您可以自己序列化数据以供日后使用:

<script>
    var titles = [];
{% for x in all_posts_by_date %}
    titles.push('{{ x.post_title }}');
{% endfor %}
    function displayPostContentOnPageButtonCliked(nId) {
        var title = titles[nId - 1];
        alert(title);
    }
</script>