只显示 Django 中最新的 3 个帖子? [英] Only show the latest 3 posts in Django?
本文介绍了只显示 Django 中最新的 3 个帖子?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在 Django 中有一个博客应用.我想在另一个页面上显示最新的 3 篇博文,但只能显示按日期排序的所有博文.
I've got a blog app in Django. I want to show the latest 3 blog posts on another page but can only show all of the blog posts ordered by date.
如何显示最近的 3 个帖子?
How can I show the latest 3 posts?
我是在视图中还是在模板标签中过滤?
Do I filter this in the views or on the template tags?
from django.db import models
from django.core.urlresolvers import reverse
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(unique=True, max_length=255, null=True)
pub_date = models.DateTimeField()
excerpt = models.TextField(null=True)
text = models.TextField()
header_image = models.FileField(upload_to='blog/%Y/%m/%d', null=True, blank=True)
post_color = models.CharField(max_length=20, null=True)
tags = models.CharField(max_length=80, blank=True)
published = models.BooleanField(default=True)
def __unicode__(self):
return u'%s' % self.title
def get_absolute_url(self):
return reverse('blog.views.post', args=[self.slug])
views.py
from django.shortcuts import render, get_object_or_404
from blog.models import Post
def about(request):
# get the blog posts that are published
posts = Post.objects.filter(published=True).order_by('-pub_date')
# now return the rendered template
return render(request, 'blog/about.html', {'post': posts})
about.html
{% for post in post %}
<section class="post">
<h3><a class="post-title"
href="{{post.get_absolute_url}}">
{{ post.title }}
</a></h3>
<span class="post-meta">
{{ post.pub_date | date:"d F Y" }}
</span>
<p class="post-excerpt">
{{ post.excerpt }}
</p>
</section>
{% endfor %}
推荐答案
试试这个,
posts = Post.objects.filter(published=True).order_by('-pub_date')[0:3]
这篇关于只显示 Django 中最新的 3 个帖子?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文