内容回顾
1、可迭代对象、迭代器、生成器、装饰器有什么区别?
可迭代对象:内部实现了__iter__方法,是一个迭代器
迭代器:内部实现了__iter__和__next__方法,可以进行for循环
生成器:函数内部有yield的就是生成器,生成器也有一个__next__方法,它的本质是一个迭代器。
生成器有两大功能:1、生成 2、迭代
装饰器:在函数执行之前或者函数执行之后要扩展的功能,装饰器是用闭包实现的
2、面向对象的方法?面向对象有三种方法:
实例方法:def func(self):pass 用对象去调用方法
类方法:cls是当前操作的类名
@classmethod
def func(cls):pass
静态方法:
@staticmethod
def func():pass
类方法和静态方法的区别:
类方法:类方法传一个cls参数
静态方法:静态方法不用传参数
相同点:都可以用用类去调用方法
3、类里面的字段有两种:
静态字段
动态字段
class A:
s ="aaa" 静态字段
def __init__(self):
self.name = name 对象字段
4、属性:
@property def func(self): pass @fee.setter def fee(self): pass @fee.deltter def fee(self): pass 吧一个方法当做属性来调用 因为属性不能被修改,可以用@fee.setter
5、提高查询数据库性能相关的有什么方式?
加索引的方式:索引就是加速查询 :通过不断的缩小数据的范围筛选出最终想要的结果
索引又分为几大类?
索引分类
1.普通索引index :加速查找
2.唯一索引
主键索引:primary key :加速查找+约束(不为空且唯一)
唯一索引:unique:加速查找+约束 (唯一)
3.联合索引
-primary key(id,name):联合主键索引
-unique(id,name):联合唯一索引
-index(id,name):联合普通索引
4.全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。
5.空间索引spatial :了解就好,几乎不用
6、如何命中索引?
创建索引,未命中
命中:相当于精确查询。。。in,like就不命中
排序条件为索引,则select字段必须也是索引字段,否则无法命中
6、django的生命周期
请求先到wsgi---中间件---如果验证通过就走到路由系统----视图函数(从数据库中取到数据,在模板中渲染)
7、中间件做过什么?
用户登录
权限管理
crsf
session
8、在路由系统url上一定要记得加上起始终止符
9、视图:request请求都拿到了些什么?
request.POST POST里面可能拿不到数据,但是在body中一定会拿到数据
request.body
request.GET
request.path_info
request.method
request.session
request.cookies
....
10、Form验证
创建规则:
类:
字段:
required=True, min_length=3, max_length=18, error_messages={ ‘required‘: ‘密码不能为空‘, ‘min_length‘: ‘密码长度不能小于3‘, ‘max_length‘: ‘密码长度不能大于18‘, ‘invalid‘: ‘密码格式错误‘, },
validators=[RegexValidator(‘\d+‘,‘只能是数字‘) ]
11、数据库操作
13个API操作
all,filter,get,values,values_list,fast,last,distinct,reverse,include,order_by, exist,count
另加2个:only、refer
FK ManyToMany
12、模板
自定义过滤器和标签
1、常见一个templatetags文件夹
2、在该文件夹中随便创建一个py文件
3、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py
3、{% load my_tags %}
自定义过滤器函数的参数只能两个,可以进行逻辑判断
自定义标签无参数限制,不能进行逻辑判断
13. Session和Cookie是什么?什么区别和关系?Session原理?
由于http无状态,当请求进来的时候不会保存状态,当每次访问的时候就不知道是谁进来了,这就引出了cookie
cookie的原理:
服务器产生内容,浏览器收到请求后保存在浏览器;
当浏览器再次访问时,浏览器会自动带上cookie,
这样服务器就能通过cookie的内容来判断这个是“谁”了。
session 的原理:
session会保存在服务器,这样比较安全
总结而言:cookie弥补了http无状态的不足,让服务器知道来的人是“谁”;
但是cookie以文本的形式保存在本地,自身安全性较差;
所以我们就通过cookie识别不同的用户,对应的在session里保存私密的信息以及超过4096字节的文本。
另外,上述所说的cookie和session其实是共通性的东西,不限于语言和框架
14. 什么是模板继承,好处是什么?
模板继承{% extends "base.html" %}
好处:缩减代码