我有一个新闻模型。我使用Django admin将新闻添加到数据库中。模型Post
由标题,正文和图像组成。
在我项目的main.html
页上,我有一个带3张幻灯片的轮播。
我的数据库中已经有一些新闻,并且我想在该轮播中显示最后一个,倒数第二个,等等。图像。
我的问题是:我应该在 html 中添加什么代码以显示最后一张,倒数第二张和倒数第三张图片?
<img src="???"> {# the last image #}
<img src="???"> {# the second last image #}
<img src="???"> {# the third last image #}
答案 0 :(得分:0)
您可以尝试这样:
posts= Post.objects.all().order_by('-id')
last_post = posts[0]
second_last_post = posts[1]
third_last_post = posts[2]
last_three_posts = posts[0:3]
但是请确保至少有3个帖子,否则它将引发索引错误
答案 1 :(得分:0)
# views.py
from django.views.generic import TemplateView
class HomePageView(TemplateView):
template_name = 'home.html'
posts = Post.objects.all().order_by('-id')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context = {
'carousel_posts': self.posts[:3],
}
return context
使用此方法在模板中的carouser_posts
关键字上进行for循环,并提取所需的信息。
<div class="carousel-inner">
{% for post in carousel_posts %}
<div class="carousel-item active">
<img src="{{post.image}}">
<p>{{post.title}}"</p>
</div>
{% endfor %}
</div>
更新
回答您的更新。使用carousel_posts
提供的上下文关键字HomePageView
,我们可以使用for循环逐个访问post
对象。
在模板中,假设您的Post
模型具有一个名为image
的图像字段。
{% for post in carousel_posts %}
<img src="{{ post.image.url }}">
{% endfor %}