我正在为Django编写一个类似于博客的简单应用程序,并试图让首页的帖子限制为5个,并提供一个综合档案,一次列出100个帖子。 (100是不现实的,只是扔了一个数字)
由于博客文章块在两个页面之间看起来完全相同而不是显示的数字,我想将相应的HTML放在一个单独的模板中,我可以从正在渲染的实际模板中包含或链接到该模板。我查看了文档,并且include
标记看起来很有前景,但它显然在当前上下文之外呈现,这对我的原因没有帮助,因为它不会让对象循环。除此之外,我看不到任何其他方式来做我想要的。这是可能的还是我只是运气不好而且不得不违反DRY?代码如下,让您了解我的需求。
由于
#######################
# news/frontpage.html #
#######################
{% extends "news/base.html" %}
{% block site_title %} - Front Page{% endblock %}
{% block center_col %}
{{ block.super }}
<a href="/news/">View Older Blog Posts</a>
{% endblock %}
{% block blog_rows %}
{% for object in object_list %}
# Blog post content would go here, however it is to be included.
{% endfor %}
{% endblock %}
答案 0 :(得分:2)
您正在寻找inclusion tag。
答案 1 :(得分:0)
为什么不过滤要在视图中显示的博文?这样你可以保持模板相同:
{% for object in blogposts %}
# ...
{% endfor %}
您可以在视图中定义博客帖子,其中包含5个或100个帖子。
答案 2 :(得分:0)
Ignacio是正确的,你想要一个包含标签,但你应该知道include
标签在当前上下文之外做不呈现 - 它肯定使用与块相同的上下文它在。
您的问题可能是您尝试在blogpost_set
上调用object_list
- 但该关系不是对象列表,而是列表中的每个单独对象。您需要遍历object_list
,然后遍历每个blogpost_set.all
。