我有一个新闻模型。看起来像:
class Post (models.Model):
title = models.CharField(max_length=50)
body = models.TextField()
image = models.ImageField(upload_to='news_image', blank=True)
def __str__(self):
return self.title
views.py
如下:
class PostListView(ListView):
model = Post
template_name = 'html/main.html'
class PostDetailView(DetailView):
model = Post
template_name = 'html/post_detail.html'
每个新闻都有自己的网址:
urlpatterns = [
path('', views.PostListView.as_view(), name='main'),
path('news/<int:pk>/', views.PostDetailView.as_view(), name='news_page')]
我使用django管理员添加帖子。
我想在main.html
上显示数据库中倒数第二个帖子的标题和图像。我还需要该帖子的链接。
<img src="?????" href="????">
<p>{{ ??? }}</p>
我该怎么办?
答案 0 :(得分:2)
这不是您在模板中执行的操作。而是通过定义get_context_data
将其添加到视图中的上下文中。
class PostListView(ListView):
model = Post
template_name = 'html/main.html'
def get_context_data(self, **kwargs):
kwargs['second_last_post'] = Post.objects.all().reverse()[1]
return super().get_context_data(**kwargs)
(请注意,由于您没有定义任何顺序,因此“倒数第二个帖子”的内容相当随意。)