Django自定義url

自定義添加

自定義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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容