在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變量