美文网首页
Django自定义url

Django自定义url

作者: MingSha | 来源:发表于2017-02-04 09:42 被阅读0次

    自定义添加

    自定义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)
    

    这段代码的意思是根据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可以实现相同的目的。安装完插件后在models.py中使用from autoslug import AutoSlugField引入相应的代码。在slug处换为相应的代码即可。

    插件
    详细用法https://pypi.python.org/pypi/django-autoslug/

    uuslug

    以上方法皆为英文,对于中文或者其它语言使用uuslug,自定义后会生成在slug field处生成相应的slug。

    Paste_Image.png

    相关文章

      网友评论

          本文标题:Django自定义url

          本文链接:https://www.haomeiwen.com/subject/nlsjittx.html