Django自定义url

时间:2021-6-3 作者:qvyue

自定义添加

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

Django自定义url
遍历

在urls.py中定义相应的url格式

    # url(r'^detail/(?Pd+)/$', detail, name="detail"),
    url(r'^detail/(?P[w-]+)/$', detail, name="detail"),

其中第一句为使用id访问的格式,第二句为使用自定义slug访问方式。

使用插件

使用插件autoslug可以实现相同的目的。安装完插件后在models.py中使用from autoslug import AutoSlugField引入相应的代码。在slug处换为相应的代码即可。

Django自定义url
插件

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

uuslug

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

Django自定义url
Paste_Image.png
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。