【发布时间】:2013-11-29 17:34:32
【问题描述】:
您好,我正在使用 Python/Django 构建一个简单的博客。在我的 index.html 文件中,我试图在单击包含月份的按钮时显示存档的帖子。目前,我只是想将那个月发布的每个帖子的 id 放入一个 javascript 数组中。但由于某种原因,它总是返回 true!
<script type="text/javascript">
function showPosts(month)
{
var posts_in_month=[];
{% for post in all_posts %}
var match = {{ post.pub_date.month }}
{% ifequal match month %}
posts_in_month.push({{ post.id }})
{% endifequal %}
{% endfor %}
}
</script>
然后我继续使用 switch 语句,根据单击的月份显示数组的内容。该代码确实有效,当我调用 alert(month) 时它会正确显示,当我调用 alert({{ post.pub_date.month }}) 时它也显示得很好。但是这些通常不一样,为什么它总是将 ifequal 评估为 true?
【问题讨论】:
-
您将 django 变量与 javascrip 变量混合,
match和month不是 django 范围,您不能使用ifequal。 -
你是对的。我看到我做了什么。解决方案是使用使用 js 的 if 语句而不是模板标签。 if(match==month) { posts_in_month.push({{ post.id }}) } 我对 Javascript 也很陌生(老实说,完全是菜鸟),所以我看不出有什么问题。跨度>
-
查看生成的 HTML 代码,它无济于事。
-
@user2676680 请不要那样做。混合和匹配 Django 模板语言和 javascript 将导致您遇到问题。与其将 javascript 与 django 模板耦合,不如尝试解耦。
-
很高兴知道。我会牢记这一点,并在未来避免这种陷阱。谢谢。
标签: javascript python django templates