视图层
一个视图函数,简称视图
视图函数第一个参数必须为HttpRequest实例,且视图必须返回一个HttpResponse对象或者子对象作为响应.
HttpResponse():返回字符串类型
render():返回html文档,并且在返回给浏览器之前还可以给html文件传值
redirect():重定向
JsonResponse
json模块
dumps:将python数据转换成json格式的字符串
loads:将json格式的字符串转换成python格式的数据
JsonResponse和json是一样的操作,可以帮你进行序列化,源码中在进行序列化的时候,除了传入数据之外还有一个参数,但是前面加了两个*,意味着会将传入的字典解开成关键字参数,所以在取消转码时可以用到
如果需要序列化除字典外的参数需要将safe改为False
html文档快捷添加代码:
form表单如何上传文件及后端如何获取
1.method必须指定为post
2.enctype必须换成multipart/form-data
3.post请求时需要将settings中middleware第四句注释(当前需要,后面讲解之后就不用了)
enctype就是encodetype就是编码类型的意思
multipart/form-data是指表单数据由多部分构成,既有文本数据,又有文件等二进制格式的数据
默认情况下,enctype的值是
application/x-www-form-urlencoded,不能用于文件上传,只能上传文本格式的数据
request.method:获取请求方式,全大写的字符串
request.POST只能获取到普通的键值对数据,文件不行
request.FILES:获取到post请求文件对象
request.path
request.path_info
request.get_full_path()
以上三种都可以获取到url的后缀,但是get_full_path()能够获取完整的url以及问号后面的参数
FBV和CBV
FBV:基于函数的视图,在views.py中定义函数来处理用户的请求
CBV:基于对象的视图
模板层
模板传值的语法
{{ }}:变量相关
{% %}:逻辑相关
python所有的基本数据类型都能够通过模板语法传递给前端页面.如果是函数的话,必须要有返回值.模板语法会自动帮你调用当前函数拿到返回值
注意:不能给函数传递参数,模板语法不支持给函数传递参数
传递类名时,模板语法也会帮你加括号调用,实例化得到一个对象
数据取值是,可以直接通过句点符获取,不管是索引还是键都可以过滤器(最多有两个参数)
过滤器类似于模板语法的内置方法
基本语法:
{{ 数据|过滤器:参数}}