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. 【Python学习之五】高级特性1(切片、迭代、列表生成器、生成器、迭代器)

    1.切片 有一个list—>L = [1,2,3,4,5,6,7]或tuple—>T = (1,2,3,4,5,6,7),如果想取得前三个元素,怎么操作? 硬方法,也是低效的方法是:L= ...

  2. python-函数的对象、函数嵌套、名称空间和作用域

    目录 函数的对象 函数对象的四大功能 引用 当做参数传给一个函数 可以当做函数的返回值 可以当做容器类型的元素 函数的嵌套 函数的嵌套定义 函数的嵌套调用 名称空间与作用域 名称空间 内置名称空间 全 ...

  3. socketserver的使用

    socketserver底层也是使用线程实现的并发,直接上代码 # server import socketserver ''' socketserver使用模式: 1 功能类 class Myser ...

  4. 思维水题:UVa512-Spreadsheet Tracking

    Spreadsheet Tracking Data in spreadsheets are stored in cells, which are organized in rows (r) and c ...

  5. BZOJ 5336: [TJOI2018]party

    状压最长公共子序列的DP数组,一维最多K(15)个数,且相邻两个数的差不超过1,2^15种状态,预处理转移 #include<cstdio> #include<algorithm&g ...

  6. JAVA 基础--开发环境 vscode 搭建

    对于使用 Visual Studio Code 的 Java 开发者来说,Language Support for Java(TM) by Red Hat 扩展提供了非常好的语言特性支持,比如智能感知 ...

  7. seleniumIDE使用

    1.selenium IDE使用:适用于火狐浏览器 2.界面按钮包括录制(右上角的红点),运行脚本(中上页的绿色三角,包括依次运行和单个运行的2个运行按钮) 3.导出文件为.java,在文件选项中

  8. LaTeX新人教程,30分钟从完全陌生到基本入门[转载]

    LaTeX新人教程,30分钟从完全陌生到基本入门[转载] 2017-02-05 分类:TeX讲义 阅读(32514) 评论(0)  这是一篇老文了,前几天看微博的时候看到的,文中的很多表达比较过激,思 ...

  9. CM10 WIFI连不上解决方案

    手机是Moto Mileston2 ,好久之前就刷成了CM10, 但是一直没出问题. 最近,发现在某些路由器上连接不上,总是 在验证账户或者获取IP. 解决办法如下: http://moto.zol. ...

  10. 关于windows系统DPI增大导致字体变大的原因分析

    最近再学习WPF开发,其中提到一个特性“分辨率无关性”,主要功能就是实现开发的桌面程序在不同分辨率的电脑上显示时,会根据系统的DPI自动进行UI的缩放,从而不会导致应用程序的失真. 这个里面就提到了个 ...