DjangoCBV&FBV&模板层
看框架的源码很重要!!!
1. JsonResponse类
"""
视图函数中的返回值
HttpResponse
render
redirect
根据报错的反馈,证明他们本质上都是HttpResponse对象
# 参考源码就可以证明!! #
"""
# 1. 混合开发项目:前端页面和后端代码写到一起
# 2. 前后端分离项目:前端是一个项目,后端是一个项目,后端只需要写接口。
json格式的数据:进行跨语言数据传输
json 和 pickle 方法一样,区别在于支持的数据类型不同
# json序列化出来的数据是看得懂的,就是一个字符串
# pickle序列化出来的结果看不懂,因为结果是二进制
# pickle序列化出来的数据只能在python中使用。
# js中如何序列化
JSON.stringify() # 序列化
JSON.parse() # 反序列化
Json.Response(user_dict, json_dumps_params={'ensure_ascii':False})
# 可以显示汉字了
# 参考源码!!!!!!!!
2. form表单上传文件
上传文件注意事项:
1. 必须是post请求
2. enctype参数必须是multipart/form-data
enctype='multipart/form-data'
后端:
在 request.FILES中接收文件数据,其他数据一律按照请求方式接收
form表单可以传递的数据格式:
1. urlencoded
2. form-data
# 不能提交json格式的数据
"""
提交json格式的数据
1. Ajax
2. 第三方攻击
postman
apizza
"""
数据格式有:
1. urlencoded
2. form-data
3. json格式
3. FBV和CBV
FBV:fucntion based view
CBV:class based view
# CBV必须要继承一个类
from django.views import View
class IndexView(View):
def get(self, request):
print('get')
return HttpResponse('get')
"""
CBV 中是通过请求方式确定访问的方法
get,post,put,delete,patch...
"""
# 路由
url(r'^indexCbv/', views.IndexView.as_view()),
4. CBV 源码
# @classonlymethod 本质上也是classmethod
"走几遍之后,后面不看源码,思考这个CBV源码是怎样走的"
5. 模板语法
"1. 传值"
# 和变量相关的都使用 {{ }}
# 和逻辑相关的都使用 {% %}
"模板文件中一律使用 .点语法"
# 在模板文件里面的函数,不用加括号,会自动加括号调用的。且函数不能传递参数。
5.1 过滤器
# 相当于python 里面的内置方法
语法:
{{变量|过滤器:参数(如果有的话)}}
# 过滤器有很多个,大概六七十,我们只需要掌握5个左右
1. length
{{c|length}}
2. default
{{f|default:"这是默认值"}}
3. date
{{d|date:'Y-m-d H:i:s'}}
4. filesizeformay
gg = 12383822
{{gg|filesizeformay}}
5. safe
h = <h1>hello 啊</h1>
{{h|safe}}
# 在后端避免xss攻击
from django.utils.safestring import mark_safe
h = mark_safe('<h1>hello 啊</h1>')
# 过滤器里面最多传 两个惨是,至少一个参数
# django3可以连续过滤,多个管道符分隔