Django项目总结:中间件,分页器,验证码
【中间件】
-- 是一个轻量级的,底层的插件,可以介入Django的请求和响应过程
-- 中间件的本质就是一个python类
-- 面向切面编程(Aspect Oriented Programming)简称AOP。
-- AOP的主要实现目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合的隔离效果。
-- 调用顺序
-- 中间件注册的时候是一个列表
-- 如果我们没有在切点处直接进行返回,中间件会依次执行
-- 如果我们直接进行了返回,后续中间件就不再执行了
【切入函数】
-- __init__:
-- 没有参数,服务器响应第一个请求的时候自动调用,用户确定是否启用该中间件
-- process_request(self,request):
-- 在执行视图前被调用,每个请求上都会调用,不主动进行返回或返回HttpResponse对象
-- process_view(self,request,view_func,view_args,view_kwargs):
-- 调用视图之前执行,每个请求都会调用,不主动进行返回或返回HttpResponse对象
-- process_template_response(self,request,response):
-- 在视图刚好执行完后进行调用,每个请求都会调用,不主动进行返回或返回HttpResponse对象
-- process_response(self,request,response):
-- 所有响应返回浏览器之前调用,每个请求都会调用,不主动进行返回或返回HttpResponse对象
-- process_exception(self,request,exception):
-- 当视图抛出异常时调用,不主动进行返回或返回HttpResponse对象
-- 切面:获取的东西,如:参数
【自定义中间件流程】
1. 在工程目录下创建middleware目录
2. 目录中创建一个python文件
3. 在python文件中导入中间件的基类
from django.utils.deprecation import MiddlewareMixin
4. 在类中根据功能需求,创建切入需求类,重写切入点方法
class LearnAOP(MiddlewareMixin):
def process_request(self,request):
print('request的路径',request.GET.path)
5. 启用中间件,在settings中进行配置,MIDDLEWARE中添加
middleware.文件名.类名
【设定时间内的点击频率】
【CSRF豁免】
【分页】
-- django提供了分页的工具,存在于django.core中
-- Paginator : 数据分页工具
-- Page : 具体的某一页面
-- Paginator:
-- 对象创建: Paginator(数据集,每一页数据数)
-- 属性:
-- count对象总数
-- num_pages:页面总数
-- page_range: 页码列表,从1开始
-- 方法: page(整数): 获得一个page对象
常见错误:
-- InvalidPage:page()传递无效页码
-- PageNotAnInteger:page()传递的不是整数
-- Empty:page()传递的值有效,但是没有数据
-- Page:对象获得,通过Paginator的page()方法获得
-- 属性:
-- object_list: 当前页面上所有的数据对象
-- number: 当前页的页码值
--paginator: 当前page关联的Paginator对象
方法:
-- has_next() :判断是否有下一页
-- has_previous():判断是否有上一页
-- has_other_pages():判断是否有上一页或下一页
-- next_page_number():返回下一页的页码
-- previous_page_number():返回上一页的页码
-- len():返回当前页的数据的个数
【分页器:目录+跳转】
优化
【绘图和验证码】
字体导入
将验证码添加到注册中
【点击验证码图片刷新】
js点击图片事件
【富文本】
-- Rich Text Format(RTF),添加样式的文档,和HTML有很多相似的地方
-- django的插件:tinymce
-- pip install django-tinymce
-- 用处大约有两种
-- 在后台管理中使用
-- 在页面中使用,通常用来作博客
-- 后台中使用:
-- 配置settings.py文件
-- INSTALLED_APPS 添加 tinymce 应用
富文本放在页面中