在models中为model创建url,这个方法可以再template中使用
from django.core.urlresolvers import reverse Class Post(models.Model): # ... def get_absolute_url(self): return reverse('blog:post_detail', args=[self.publish.year, self.publish.strftime('%m'), # strftime产生前面的0 self.publish.strftime('%d'), self.slug])
django分页
from django.core.paginator import Paginator, EmptyPage,\ PageNotAnInteger def post_list(request): object_list = Post.published.all() paginator = Paginator(object_list, 3) # 3 posts in each page page = request.GET.get('page') # request的查询字符串带page变量 1, 2, 3 try: posts = paginator.page(page) # 获取指定page页的posts 注意这里的posts是Paginator对象, # 包含posts对象和Paginator对象的方法 except PageNotAnInteger: # If page is not an integer deliver the first page posts = paginator.page(1) except EmptyPage: # If page is out of range deliver last page of results posts = paginator.page(paginator.num_pages) return render(request, 'blog/post/list.html', {'page': page, # 这里的page 可有可无,因为需要的数据都在posts里面 'posts': posts})
{% include "pagination.html" with page=posts %} # 这里就是讲posts对象换成pagination.html
# 里面的page变量