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可以连续过滤,多个管道符分隔



上一篇:Django学习笔记十---FBV视图--002篇---设置重定向和异常响应


下一篇:视图函数:CBV与FBV (ps:补充装饰器)