Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django模板-用于带切片的循环日期显示_Django_Date_If Statement_For Loop - Fatal编程技术网

django模板-用于带切片的循环日期显示

django模板-用于带切片的循环日期显示,django,date,if-statement,for-loop,Django,Date,If Statement,For Loop,我有一个django 1.4.6项目。我试图在我的模板中显示我的博客条目,这些条目在将来不会过时,因此我在models.py页面中填充了以下代码: #if the blog is post/future dated, do not display the blog entry. @property def is_past_date_published_blog(self): if self.blog_post_date_published < dat

我有一个django 1.4.6项目。我试图在我的模板中显示我的博客条目,这些条目在将来不会过时,因此我在models.py页面中填充了以下代码:

    #if the blog is post/future dated, do not display the blog entry.
    @property
    def is_past_date_published_blog(self):
        if self.blog_post_date_published < date.today():
            return True
        return False
但是,这将只显示两个条目,因为循环会计算内部if条件未包含的blog条目。我试图将for循环放在if语句中,但这不起作用。我现在被难住了


我如何编写此代码来显示今天日期之前的三个博客条目?

您可以从视图中仅传递今天之前发布的博客文章,然后使用
|切片::3“
,就像您现在所做的那样,只显示三个。在视图中操作数据比在模板中更容易

另一种方法是在模板中设置一个计数器变量,该变量在内部if条件中递增,但不鼓励在模板中进行任何数据更改。

:

目标不是发明一种编程语言。目标是提供 只需要足够的编程功能,比如分支和 循环,这对于做出与演示文稿相关的决策至关重要

您描述的任务与演示无关

过滤掉视图中未来未注明日期的博客条目,并将其传递给模板。例如:

blog_posts = BlogPost.objects.filter(blog_post_date_published__lt=datetime.today())[:3]
然后,在模板中,只需循环浏览您之前筛选过的这些博客帖子:

{% for blog_post in blog_posts %}
    # display a blog post
{% endfor %}

希望能有所帮助。

谢谢alecxe。这是一个很好的答案-非常有用。顺便说一句,如果有初学者想使用这段代码,那么不要忘记在views.py页面的头部导入from datetime import datetime。
{% for blog_post in blog_posts %}
    # display a blog post
{% endfor %}