修改文章url

master
车亮亮 9 years ago
parent 13411200f3
commit a39dd947d1

@ -1,6 +1,8 @@
from django.db import models from django.db import models
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.conf import settings from django.conf import settings
# from django.template.defaultfilters import slugify
from uuslug import slugify
class Article(models.Model): class Article(models.Model):
@ -28,6 +30,8 @@ class Article(models.Model):
category = models.ForeignKey('Category', verbose_name='分类', on_delete=models.CASCADE) category = models.ForeignKey('Category', verbose_name='分类', on_delete=models.CASCADE)
tags = models.ManyToManyField('Tag', verbose_name='标签集合', blank=True) tags = models.ManyToManyField('Tag', verbose_name='标签集合', blank=True)
slug = models.SlugField(default='no-slug', max_length=60, blank=True)
def __str__(self): def __str__(self):
return self.title return self.title
@ -37,7 +41,15 @@ class Article(models.Model):
verbose_name_plural = verbose_name verbose_name_plural = verbose_name
def get_absolute_url(self): def get_absolute_url(self):
return reverse('blog:detail', kwargs={'article_id': self.pk})
return reverse('blog:detail', kwargs=
{
'article_id': self.id,
'year': self.created_time.year,
'month': self.created_time.month,
'day': self.created_time.day,
'slug': self.slug
})
def get_category_tree(self): def get_category_tree(self):
names = [] names = []
@ -52,6 +64,10 @@ class Article(models.Model):
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
self.summary = self.summary or self.body[:settings.ARTICLE_SUB_LENGTH] self.summary = self.summary or self.body[:settings.ARTICLE_SUB_LENGTH]
if not self.slug or self.slug == 'no-slug' or not self.id:
# Only set the slug when the object is created.
self.slug = slugify(self.title)
super().save(*args, **kwargs) super().save(*args, **kwargs)
def viewed(self): def viewed(self):

@ -20,7 +20,11 @@ from . import views
urlpatterns = [ urlpatterns = [
# url(r'^$', cache_page(60 * 15)(views.IndexView.as_view()), name='index'), # url(r'^$', cache_page(60 * 15)(views.IndexView.as_view()), name='index'),
url(r'^$', views.IndexView.as_view(), name='index'), url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^article/(?P<article_id>\d+)$', views.ArticleDetailView.as_view(), name='detail'), # url(r'^article/(?P<article_id>\d+)$', views.ArticleDetailView.as_view(), name='detail'),
url(r'(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/(?P<article_id>\d+)-(?P<slug>\S+).html$',
views.ArticleDetailView.as_view(),
name='detail'),
url(r'^category/(?P<category_name>\w+)$', views.CategoryDetailView.as_view(), name='category_detail'), url(r'^category/(?P<category_name>\w+)$', views.CategoryDetailView.as_view(), name='category_detail'),
url(r'^author/(?P<author_name>\w+)$', views.AuthorDetailView.as_view(), name='author_detail'), url(r'^author/(?P<author_name>\w+)$', views.AuthorDetailView.as_view(), name='author_detail'),
url(r'^tags/(?P<tag_name>\w+)$', views.TagDetailView.as_view(), name='tag_detail'), url(r'^tags/(?P<tag_name>\w+)$', views.TagDetailView.as_view(), name='tag_detail'),

Loading…
Cancel
Save