Django:Views.py中的循环?

时间:2017-04-19 20:33:03

标签: django django-templates django-views

我想保持我的模板没有任何逻辑 - 只是html。我在index.html中使用“for”循环来循环查看帖子列表。这是循环:

{% for recent in latest %}
<h1>{{ recent.title }}</h1>
<h2>{{ recent.category }}</h2>
{% endfor %}

我想要做的是在我的帖子课程中,抓住所有帖子,检查它们是否符合某个标准,然后将它们放在可以发送到模板的变量中。

这是视图(我想最终转向models.py的逻辑):

def index(request):

  # Get latest five posts

latest_posts = Post.objects.order_by('-published_date')[:5]

  # Get a single "top" category post.
top_post = Post.objects.get(category = 1)[:1]

  # set up some contexts

top = {'front_post': top_post}
context = {'latest': latest_posts}

return render(request, 'home/index.html', context, top)

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您认为保持模板免于逻辑太过分了。模板语言提供了诸如for循环和布尔逻辑之类的原因:如果没有它们,你将最终打破MVC框架试图强制执行的separation of concerns。因为您最终会在您的视图逻辑中嵌入演示文稿信息,而这不是您想要的。作为一个简单的示例,请考虑添加将帖子作为文本文件查看的选项,而不添加第二个视图。如果将标记保留在模板中,则很容易。如果你不这样做,那是不可能的。