自定義添加
自定義url需要在model中自定義一個slug的field,然后添加保存方法,因為要使用slugify,需要引入相應的方法。
from django.template.defaultfilters import slugify
具體代碼
class Article(models.Model):
title = models.CharField(null=True, blank=True, max_length=500)
content = models.TextField(null=True, blank=True)
pub_date = models.DateField(auto_now=True)
# 自定義保存方法
slug = models.SlugField(default='', null=True, blank=True)
def save(self, *args, **kwargs):
s = "%s-%s" %(self.title, self.content)
self.slug = slugify(s)
super().save(*args, **kwargs)
這段代碼的意思是根據(jù)title生成相應的url。若title是this is china,則slugfiled會自動生成this-is-china。你也可以添加其它字段以防止生成的url重復,此處回的字段為self.content
添加完成后,在模板中遍歷時使用slug

遍歷
在urls.py中定義相應的url格式
# url(r'^detail/(?P<id>\d+)/$', detail, name="detail"),
url(r'^detail/(?P<slug>[\w-]+)/$', detail, name="detail"),
其中第一句為使用id訪問的格式,第二句為使用自定義slug訪問方式。
使用插件
使用插件autoslug可以實現(xiàn)相同的目的。安裝完插件后在models.py中使用from autoslug import AutoSlugField引入相應的代碼。在slug處換為相應的代碼即可。

插件
詳細用法https://pypi.python.org/pypi/django-autoslug/
uuslug
以上方法皆為英文,對于中文或者其它語言使用uuslug,自定義后會生成在slug field處生成相應的slug。

Paste_Image.png