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