Django細節小記

2022-05-05 00:54:10 字數 1056 閱讀 4411

前記:django的orm、模組有很多函式細節,要學會多看文件學習函式的細節簡言之,annotate()得到的是查詢集,類似all(),只不過多了一列屬性,annotate()新增的,例如統計每個出版社有多少本書(書外來鍵到出版社),但是統計書的單價總和,用annotate()會給每個書記錄加個總和屬性,此時不如使用aggregate(),aggregate()可以配合sum()等方法直接得出乙個字典,裡面是key-value。

當django聚合annotate或者aggregate時取出字典值。

聚合annotate()後[0]可能報錯,aggreagate()的取值也可能none,if not a:a = 0,也可以.get(a,0)。

基於當前取出上個月年月

import arrow

arrow.now().shift(months=-1).strftime('%y-%m')

django的values()和distinct()實現了對values()中的值去重

json資料標準字串是雙引號,平時寫字串盡量雙引號

django的form校驗可以寫校驗器,一些校驗的邏輯可以不寫在試圖函式

在python的loggin模組中,主要包含四大金剛:

loggers:記錄器

hanglers:處理器

filters:過濾器

formatters:格式化器

loggins模組定義了日誌級別,按時間嚴重程度由低到高排列,全部是大寫,因為它們是常量:

級別

級別數值

使用時機

debug

10詳細資訊,常用於除錯

ingo

20程式正常執行過程中產生的一些資訊

warning

30警告使用者,雖然程式還在正常工作,但有可能發生錯誤

error

40由於更嚴重的問題,程式已不能執行一些功能了

critical

50嚴重錯誤,程式已不能繼續執行

正向查詢(通過字段),反向查詢(通過表名),同樣道理,科學 上網是正向**,nginx是反向**

django專案細節

1.post請求要帶上 2.python同時判斷多個值使用all 裡面用列表括起來 3.django內建使用者,可以直接呼叫create user 4.如果不能保證配置的正確,先將各種路徑寫為絕對路徑 5.重定向 反向解析 6.判斷郵箱的正規表示式 a z0 9 w a z0 9 a z 7.將乙個...

Django學習小記 CBV

乙個url除了對應函式外,還能對應乙個類 view.py 例如 from django.views import view 繼承它 class login view defget self,request pass defpost self,request pass urlpatterns path...

django專案細節(4)

1.訪問的頁面事先需要登入的話,使用login request裝飾器。該裝飾器當你沒有登入時訪問頁面,就會重定向到setting.py中的login url配置的頁面,然後記錄下的的請求,登入成功之後自動跳轉到之前請求的頁面。可以用乙個類封裝。2.當你訪問乙個頁面時,django會自動判斷使用者是否...