django相关字段解释(slug)
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)的更多相关文章
- Django model字段类型清单
转载:<Django model字段类型清单> Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField ...
- Django model 字段类型清单
Django model字段类型清单 Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField 一个自动递增的整型字 ...
- SAP QM 主检验特性主数据关键字段解释
SAP QM 主检验特性主数据关键字段解释 检验特征是QM模块中的一项重要主数据,可以说是QM检验业务的构成基础,它通过体现在Task list (检验任务清单)和/或material specifi ...
- [ARM] Cortex-M Startup.s启动文件相关代码解释
1. 定义一个段名为CSTACK, 这里: NOROOT表示如何定义的段没有被关联,那么同意会被优化掉,如果不想被优化掉就使用ROOT. 后面的括号里数字表示如下: (1):这个段是2的1次方即2字节 ...
- shell实现大批量word转码然后分析相关字段
需求 需要从服务器中的所有附件(2013-2019) 共60G查找相关字段 在linux上面直接打开doc等是乱码的 思路 先全部附件转码为txt, 然后用grep遍历查找字段实现 转码shell # ...
- python实现单例模式的三种方式及相关知识解释
python实现单例模式的三种方式及相关知识解释 模块模式 装饰器模式 父类重写new继承 单例模式作为最常用的设计模式,在面试中很可能遇到要求手写.从最近的学习python的经验而言,singlet ...
- django获取字段列表(values/values_list/flat)
django获取字段列表(values/values_list/flat) values方法可以获取number字段的字典列表 values_list可以获取number的元组列表 values_li ...
- Nutch2 WebPage 字段解释
Nutch2 WebPage 字段解释 Nutch2.2.1 id
- Maven 相关知识点解释
在PC端上面关于Maven的安装等情况我这里就不再复述了,不懂的请自行百度谷歌. 今天聊一下Maven 里面的结构,及相关依赖解释. groupId,artfactId,version,type,cl ...
随机推荐
- centos启动流程
centos6启动流程 1.主板,post加电自检,检查硬件环境 2.主板选择一个硬盘进行引导,执行mbr446 grub stage1 3.grub stage1.5 加载/boot分区文件系统驱动 ...
- Mybatis查询select 传单个参数不识别,找不到
今天, Mybatis查询select 传单个参数不识别,找不到 解决办法: 加上jdbc=varchar #{XXX,jdbc=VARCHAR}
- linux优化之优化开机自启动服务
过滤出来需要的开机自启动项:chkconfig --list|grep 3:on|grep -v "crond|sshd|network|rsyslog|sysstat" ...
- jQuery将物体居中,并且转换显示和隐藏
今天来给大家贴一段代码,代码的作用就是利用jQuery将物体居中,并且转换显示和隐藏: 首先建立一个div标签并且写好css样式,具体如下 然后我想要的效果是当我点击了button这个按钮,test可 ...
- jsp常用动作
jsp:include 动态包含: jsp:forward 转发: jsp:useBean 实例化bean对象: jsp:setProperty 设置一个属性值 jsp:getProperty 获取一 ...
- OverflowError:django signed integer is greater than maximum
在学习一对一查询的时候,打印作者的电话时报了这个错 alex = Author.objects.filter(name='alex').first() print(alex.authordetail. ...
- ubuntu12.04安装wireshark
1 安装 $ sudo apt-get install wireshark 2 启动 $ sudo wireshark 3 启动报错
- Leetcode 435.无重叠区间
无重叠区间 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] 和 [2,3] 的边界相互"接触" ...
- spring AOP详解〇
AOP正在成为软件开发的下一个圣杯.使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect.AOP可以防止代码混乱. 为了理解AOP如何做到这点,考虑一 ...
- 九度oj 题目1391:顺时针打印矩阵
题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2 ...