Django slugField

转载 2013年12月05日 07:53:26
Author: xcluo
Date: 2013-01-17 09:28
Keywords: django, slug, generate a URL, 
Title: What is a "Slug" in Django?

slug 翻译过来就是, 标称, 单位的意思, 在django中, 主要是生成一个URL路径, 在你已有的有效数据下。

通俗来将:Django中的Slug会为每条model记录,自动(当然可以手动)的根据当前记录的每个字段的Value生成一个URL路径(唯一的),使得你的URL更加的易读(或者也能规避一些额外的问题)。

举例说明:
class Article():
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=1000)
    slug = models.SlugField(max_length=40)
上面是一个Django的Model, 包含三个字段, 最后一个是Slug 字段, 一般的, 我们想显示一篇 Article, 常用的方式可能是:

www.example.com/article/3/
www.example.com/a_id/3/  ......

Problem is: Maybe disclose your database ident
或者,会弱化你的URL可读性, 你可能会希望你的URL能使用title字段或content字段的部分内容来构建起来:

www.example.com/article/America attack on Iraq

这个也有问题, 就是URL 不能识别出空格, 真实的路径会变成:

www.example.com/article/America%20attack%20on%20Iraq

在你其他地方,会变的无法识别, 你就需要将这个空白符进行转义,比如这样:
www.example.com/article/America-attack-on-Iraq

OK, 这个过程就是 "Slug"。

怎么用呢?

在模型中, 简单, 只需要在模型中加上一个字段就可以了。 如何在views中或tempalte中,如何使用呢?

首先考虑到自动方式, 需要更改模型:
class Article():
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=1000)
    slug = models.SlugField(max_length=40)
    
    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Article, self).save(*args, **kwargs)
飞自动的方式, 例如:

>>> from django.template.defaultfilters import slugify
>>> tt = slugify("b b b b")
u'b-b-b-b'
>>> models.Articel(title='', contents='', slug=tt).save()

模版中, 就可以当一个数据记录直接调用, 并附件到你的跳转/link路径上

相关文章推荐

中文版django+book.pdf

  • 2017年11月14日 20:50
  • 6.73MB
  • 下载

django by example中文版.pdf

  • 2017年11月07日 21:28
  • 5.67MB
  • 下载

Django高效率分页方法

转载请注明出处! 原文链接:http://blog.csdn.net/zgyulongfei/article/details/8842338 需要在博客做一个分页的功能,网上很多资料都说用Pag...

django 自定义分页与bootstrap分页结合

django中有自带的分页模块Paginator,想Paginator提供对象的列表,就可以提供每一页上对象的方法。 这里的话不讲解Paginator,而是自定义一个分页类来完成需求: class...

pycharm平台下的Django教程

原文转载自:http://www.cnblogs.com/Leo_wl/p/5824541.html 本文面向:有python基础,刚接触web框架的初学者。   环境:windows7    p...

Lightweight Django epub

  • 2017年10月03日 18:35
  • 2.14MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Django slugField
举报原因:
原因补充:

(最多只允许输入30个字)