一、类视图
1) 类方式来定义我们的视图,这种方式叫类视图
2) 好处:方便别人继承,调用,代码的可读性,复用性
二、模板设置
1.在根目录下,右键创建一个文件夹 templates
2.设置模板 settings 'DIRS': [BASE_DIR / 'templates'],
3.使用模板 render()
案例: 需求注册页面操作
(1) 定义视图方法
def register(request):
'''
注册信息
:param request:输入用户名和密码
:return:
'''
# 获取请求方法
if request.method == 'GET':
# 返回注册页面(html)
# render() 渲染模板(html)
# def render(request请求对象, template_name模板名,context=None, content_type=None, status=None, using=None)
return render(request, 'register.html')
else:
# 处理post请求
return HttpResponse('这是post请求!')
注册页面
运行Get请求
运行Post请求:postman测试
(2) 定义类视图
from django.views.generic import View
# 类视图的写法:(必须继承View)
class RegisterView(View):
'''
类视图: 处理注册
'''
def get(self, request):
return render(request, 'register.html')
pass
def post(self, request):
return render(request, 'index.html')
pass
url配置:
# 类视图的配置路由,注意:as_view() 必须有()
path('registerView/', views.RegisterView.as_view()),
运行同上
三、模板语法
如: {{uname}} uname是后端数据变量
# 定义视图方法
def test1(request):
uname = 'Teddy 泰迪'
age = 5
gender = '女'
count = 1
# context = {} 是字典key:value
context = {'uname': uname, 'age': age, 'sex': gender, 'count': count}
# return render(request,'welcome.html',context={'uname':uname,'age':age,'sex':gender,'count':count})
return render(request, 'welcome.html', context=context)
def test2(request):
uname = 'Teddy 泰迪'
age = 5
gender = '女'
count = 1
# context = {} 是字典key:value
context = {'uname': uname, 'age': age, 'sex': gender, 'count': count}
return render(request, 'index.html', context={'context':context})
前端html获取后端的数据
welcome.html
说明:lower 将大写修改成小写; capfirst 将首字母大写; add:数字变量名 (自动加1)
index.html
四、中间件
1) 什么是中间件?
Django中的中间件是一个轻量级、底层的插件系统。
2) 中间件能做什么?
Django 中间件是修改 Django request 或者 response 对象的钩子,可以理解为是介于 HttpRequest 与 HttpResponse 处理之间的一道处理过程。
3) 中间件作用:
- 修改请求,即传送到 view 中的 HttpRequest 对象。
- 修改响应,即 view 返回的 HttpResponse 对象。
4)执行流程
中间件组件配置在 settings.py 文件的 MIDDLEWARE 选项列表中。
配置中的每个字符串选项都是一个类,也就是一个中间件。
Django 默认的中间件配置:
自定义中间件
(1) 在app目录下创建 py 文件,名字自定义;
(2) 在 settings.py 中的 MIDDLEWARE 里注册自定义的中间件类:
自定义中间件类的方法
自定义中间件类的方法有:process_request 和 process_response。
说明:
process_request 方法是在视图函数之前执行的。
当配置多个中间件时,会按照 MIDDLEWARE中 的注册顺序,也就是列表的索引值,顺序执行。
process_response 方法是在视图函数之后执行的。
当配置多个中间件时,会按照 MIDDLEWARE 中的注册顺序,也就是列表的索引值,倒序执行。
运行: