MVC
大部分开发语言中都有MVC框架
MVC框架的核心思想是:解耦
降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现了代码的重用
M 表示model,主要用于对数据库层的封装
V 表示view,用于向用户展示结果
C 表示controller,是核心,用于处理要求、获取数据、返回结果
MVT
Django是一款python的web开发框架
与MVC有所不同,属于MVT框架
M 表示model,负责与数据库交互
V 表示view,是核心,负责接收请求、获取数据、返回结果
T 表示template 负责呈现内容到浏览器
惰性执行:
all()
filter()
exclude()
order_by()
values()
写法:
filter(键1=值1,键2=值2)
等价于
filter(键1=值1).filter(键2=值2)
get() 返回单个满足条件的对象
count() 返回当前查询的总条数
first() 返回第一个对象
last() 返回最后一个对象
exsts() 判断查询集中是否有数据,如果有则返回True
定义模型:
AutoField:一个根据实际ID自动增长的IntegerField,通常不指定,如果不指定,一个主键字段将自动添加到模型中
BooleanField:true/false 字段,此字段的默认表单控制是CheckboxInput
NullBooleanField:支持null、true、false三种值
CharField(max_length=字符长度):字符串,默认的表单样式是 TextInput
TextField:大文本字段,一般超过4000使用,默认的表单控件是Textarea
IntegerField:整数
DecimalField(max_digits=None, decimal_places=None):使用python的Decimal实例表示的十进制浮点数
DecimalField.max_digits:位数总数
DecimalField.decimal_places:小数点后的数字位数
FloatField:用Python的float实例来表示的浮点数
DateField([auto_now=False, auto_now_add=False]):使用Python的datetime.date实例表示的日期
参数 DateField.auto_now:每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false
参数DateField.auto_now_add:当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false
该字段默认对应的表单控件是一个TextInput. 在管理员站点添加了一个JavaScript写的日历控件,和一个“Today"的快捷按钮,包含了一个额外的invalid_date错误消息键
auto_now_add, auto_now, and default 这些设置是相互排斥的,他们之间的任何组合将会发生错误的结果
TimeField:使用Python的datetime.time实例表示的时间,参数同DateField
DateTimeField:使用Python的datetime.datetime实例表示的日期和时间,参数同DateField
FileField:一个上传文件的字段
ImageField:继承了FileField的所有属性和方法,但对上传的对象进行校验,确保它是个有效的image
模型成员
objects:是Manager类型的对象,用于数据库进行交互