1、slug:用于生成一个有意义(valid, meaninful)URL  参考(http://stackoverflow.com/questions/427102/what-is-a-slug-in-django)

比如:http://stackoverflow.com/questions/427102/what-is-a-slug-in-django  后面的“what-is-a-slug-in-django”就是经过slug后的产物

如何使用:

需要使用slugify功能:from django.utils.text import slugify

例子:slugify(value)  If value is "Joel is a slug", the output will be "joel-is-a-slug".

2、SlugField:也是起到类似作用,只不过这个一般是后台直接添加时使用,比如:slug = models.SlugField(unique=True)   这样在后台就有个slug框,填写后,URL中就包含slug中的内容。

3、pre_save:被保存进数据库前的预存储。  前面使用slug有一个问题,slug是从title中取值,但还没保存进数据库如何取?pre_save就起到这样的作用,保存开始前会发出信号,我们利用发出的信号,经过函数来进行 “准备数据”。函数(接收器)接受这个信号的方法有两个:一是connect方法,另一个是使用receiver() 装饰器来自动连接

from django.db.models.signals import pre_save

pre_save.connect(pre_save_post_receiver, sender=Post)

参考:http://python.usyiyi.cn/django/topics/signals.html#receiver-functions

http://stackoverflow.com/questions/6461989/populating-django-field-with-pre-save

http://python.usyiyi.cn/django/topics/signals.html

(保存时发生的事情:http://sns.hwcrazy.com/django/ref/models/instances/index.html)

4、从url到最后的创建成功

url.py:
  url(r'^create/$', post_create)----------匹配视图post_create
views.py:
  from .forms import PostForm-------------关联到form
  def post_create(request):
     form = PostForm(request.POST or None, request.FILES or None)
form.py
from .models import Post
class PostForm(forms.ModelForm):
    class Meta:
        model = Post -------------关联到Post类
models.py
pre_save.connect(pre_save_post_receiver, sender=Post) ------sender – 指定一个特定的sender,来从它那里接受信号 最后返回slug

5、manager:

1、模块manager是一个对象(类),Django模块通过它进行数据库查询。 每个Django模块至少有一个manager,你可以创建自定义manager以定制数据库访问。在modles.py中,如果我们没有特别定义,默认manager(objects)将会被自动创建,即常见的这个Post.objects.all()。

2、我们可以自定义manager以定制数据库访问

class PostManager(models.Manager):
def active(self, *args, **kwargs):
return super(PostManager, self).filter(draft=False).filter(publish__lte=timezone.now()) my_objects = PostManager() # 如果是objects,那就会替换默认的objects

这样之后,我们就可以通过Post.myobjects.all()来访问过滤之后的数据了

参考:http://www.jb51.net/article/69767.htm

6、super:

上边的super(PostManager, self).filter(),,中的super,它会找出PostManager所继承的类,首先找到的filter方法来进行。这里涉及到继承中的方法解析顺序(MRO)。

MRO分两类

经典类:从左到右的深度优先查找

新式类:它仍然采用从左至右的深度优先遍历,但是如果遍历中出现重复的类,只保留最后一个

参考:http://hanjianwei.com/2013/07/25/python-mro/          http://stackoverflow.com/questions/7141820/use-of-python-super-function-in-django-model

django相关字段解释(slug)的更多相关文章

  1. Django model字段类型清单

    转载:<Django model字段类型清单> Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField ...

  2. Django model 字段类型清单

    Django model字段类型清单 Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField 一个自动递增的整型字 ...

  3. SAP QM 主检验特性主数据关键字段解释

    SAP QM 主检验特性主数据关键字段解释 检验特征是QM模块中的一项重要主数据,可以说是QM检验业务的构成基础,它通过体现在Task list (检验任务清单)和/或material specifi ...

  4. [ARM] Cortex-M Startup.s启动文件相关代码解释

    1. 定义一个段名为CSTACK, 这里: NOROOT表示如何定义的段没有被关联,那么同意会被优化掉,如果不想被优化掉就使用ROOT. 后面的括号里数字表示如下: (1):这个段是2的1次方即2字节 ...

  5. shell实现大批量word转码然后分析相关字段

    需求 需要从服务器中的所有附件(2013-2019) 共60G查找相关字段 在linux上面直接打开doc等是乱码的 思路 先全部附件转码为txt, 然后用grep遍历查找字段实现 转码shell # ...

  6. python实现单例模式的三种方式及相关知识解释

    python实现单例模式的三种方式及相关知识解释 模块模式 装饰器模式 父类重写new继承 单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singlet ...

  7. django获取字段列表(values/values_list/flat)

    django获取字段列表(values/values_list/flat) values方法可以获取number字段的字典列表 values_list可以获取number的元组列表 values_li ...

  8. Nutch2 WebPage 字段解释

    Nutch2 WebPage 字段解释 Nutch2.2.1 id

  9. Maven 相关知识点解释

    在PC端上面关于Maven的安装等情况我这里就不再复述了,不懂的请自行百度谷歌. 今天聊一下Maven 里面的结构,及相关依赖解释. groupId,artfactId,version,type,cl ...

随机推荐

  1. centos启动流程

    centos6启动流程 1.主板,post加电自检,检查硬件环境 2.主板选择一个硬盘进行引导,执行mbr446 grub stage1 3.grub stage1.5 加载/boot分区文件系统驱动 ...

  2. Mybatis查询select 传单个参数不识别,找不到

    今天, Mybatis查询select 传单个参数不识别,找不到 解决办法: 加上jdbc=varchar #{XXX,jdbc=VARCHAR}

  3. linux优化之优化开机自启动服务

    过滤出来需要的开机自启动项:chkconfig  --list|grep  3:on|grep  -v  "crond|sshd|network|rsyslog|sysstat" ...

  4. jQuery将物体居中,并且转换显示和隐藏

    今天来给大家贴一段代码,代码的作用就是利用jQuery将物体居中,并且转换显示和隐藏: 首先建立一个div标签并且写好css样式,具体如下 然后我想要的效果是当我点击了button这个按钮,test可 ...

  5. jsp常用动作

    jsp:include 动态包含: jsp:forward 转发: jsp:useBean 实例化bean对象: jsp:setProperty 设置一个属性值 jsp:getProperty 获取一 ...

  6. OverflowError:django signed integer is greater than maximum

    在学习一对一查询的时候,打印作者的电话时报了这个错 alex = Author.objects.filter(name='alex').first() print(alex.authordetail. ...

  7. ubuntu12.04安装wireshark

    1 安装 $ sudo apt-get install wireshark 2 启动 $ sudo wireshark 3 启动报错

  8. Leetcode 435.无重叠区间

    无重叠区间 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触" ...

  9. spring AOP详解〇

    AOP正在成为软件开发的下一个圣杯.使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect.AOP可以防止代码混乱. 为了理解AOP如何做到这点,考虑一 ...

  10. 九度oj 题目1391:顺时针打印矩阵

    题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2 ...