自定义模板标签
在对应的app下创建templatetags文件夹, 我的是
blog/templatetags/mytags.py:
# 自定义模板标签 from ..models import Article from django import template register = template.Library() @register.simple_tag # 注册为模板标签 def get_new_articles(num=5): articles = Article.objects.all().order_by('-create_time') return articles[:num]
Article 是创建的数据模型,拥有的字段title, content, create_time等
利用自定义模板标签在html文件中来获得Article的实例
get_new_articles 将值赋给news, 循环遍历news,获取实例对象字段
index.html:
{% load mytags %}
{% get_new_articles as news %} <h3 class="widget-title">最新文章</h3> <ul> {% for new in news %} <li> <a href="{% url 'blog:detail' new.id %}">{{ new.title }}</a> </li> {% empty %} 暂无文章! {% endfor %} </ul>
重定向
blog:detail 是url的名称, kwargs则是要传递的参数
from django.shortcuts import reverse
return HttpResponseRedirect(reverse('blog:detail', kwargs={'id': object.id}))
在模型内定义排序
首先按照 create_time 降序排序,如果create_time一样在按照title排序
class Article(models.Model): ''' 博客文章 ''' title = models.CharField(max_length=60, verbose_name='文章标题') content = models.TextField(verbose_name='文章内容') create_time = models.DateTimeField(default=datetime.now, verbose_name='创建时间') def get_absolute_url(self): return reverse('blog:detail', kwargs={'id': self.id}) class Meta: ordering = ['-create_time', 'title']