django模板-用于带切片的循环日期显示
我有一个django 1.4.6项目。我试图在我的模板中显示我的博客条目,这些条目在将来不会过时,因此我在models.py页面中填充了以下代码: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
#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 %}