DjangoCBV&FBV&模板層
阿新 • • 發佈:2022-03-01
看框架的原始碼很重要!!!
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可以連續過濾,多個管道符分隔