Flask上下文全局變量
current_app 程序上下文 當前激活程序的程序實例
g 程序上下文 處理請求時用做臨時存儲的對象。每次請求都會重設這個變量
request 請求上下文 請求對象,封裝了客戶端發出的 HTTP 請求中的內容
session 請求上下文 用戶會話,用於存儲請求之間須要「記住」的值的詞典html
爲了不在每一個視圖函數中都使用重複的代碼,
Flask 提供了註冊通用函數的功能,註冊的函數可在請求被分發到視圖函數以前或以後調用。
請求鉤子使用修飾器實現。Flask 支持如下 4 種鉤子。
before_first_request • : 註冊一個函數,在處理第一個請求以前運行。
before_request • : 註冊一個函數,在每次請求以前運行。
after_request • : 註冊一個函數,若是沒有未處理的異常拋出,在每次請求以後運行。
teardown_request • : 註冊一個函數,即便有未處理的異常拋出,也在每次請求以後運行。
在請求鉤子函數和視圖函數之間共享數據通常使用上下文全局變量 g 。例如, before_
request 處理程序能夠從數據庫中加載已登陸用戶,並將其保存到 g.user 中。隨後調用視
圖函數時,視圖函數再使用 g.user 獲取用戶正則表達式
Jinja2變量過濾器 Hello, {{ name|capitalize }}
過濾器名 說 明
safe 渲染值時不轉義
capitalize 把值的首字母轉換成大寫,其餘字母轉換成小寫
lower 把值轉換成小寫形式
upper 把值轉換成大寫形式
title 把值中每一個單詞的首字母都轉換成大寫
trim 把值的首尾空格去掉
striptags 渲染以前把值中全部的 HTML 標籤都刪掉數據庫
Flask-Bootstrap基模板中定義的塊 bootstrap/base.html
塊 名 說 明
doc 整個 HTML 文檔
html_attribs<html> 標籤的屬性
html <html> 標籤中的內容
head <head> 標籤中的內容
title <title> 標籤中的內容
metas 一組 <meta> 標籤
styles 層疊樣式表定義
body_attribs <body> 標籤的屬性
body <body> 標籤中的內容
navbar 用戶定義的導航條
content 用戶定義的頁面內容
scripts 文檔底部的 JavaScript 聲明bootstrap
super() 獲取原來的內容api
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
@app.errorhandler(500)
def internal_server_error(e):
return render_template('500.html'), 500
return render_template('500.html'), 500安全
WTForms支持的HTML標準字段
字段類型 說 明
StringField 文本字段
TextAreaField 多行文本字段
PasswordField 密碼文本字段
HiddenField 隱藏文本字段
DateField 文本字段,值爲 datetime.date 格式
DateTimeField 文本字段,值爲 datetime.datetime 格式
IntegerField 文本字段,值爲整數
DecimalField 文本字段,值爲 decimal.Decimal
FloatField 文本字段,值爲浮點數
BooleanField 複選框,值爲 True 和 False
RadioField 一組單選框
SelectField 下拉列表
SelectMultipleField 下拉列表,可選擇多個值
FileField 文件上傳字段
SubmitField 表單提交按鈕
FormField 把表單做爲字段嵌入另外一個表單
FieldList 一組指定類型的字段服務器
WTForms驗證函數
驗證函數 說 明
Email 驗證電子郵件地址
EqualTo 比較兩個字段的值;經常使用於要求輸入兩次密碼進行確認的狀況
IPAddress 驗證 IPv4 網絡地址
Length 驗證輸入字符串的長度
NumberRange 驗證輸入的值在數字範圍內
Optional 無輸入值時跳過其餘驗證函數
Required 確保字段中有數據
Regexp 使用正則表達式驗證輸入值
URL 驗證 URL
AnyOf 確保輸入值在可選值列表中
NoneOf 確保輸入值不在可選值列表中網絡
Flask-Bootstrap基模板中定義的塊
塊 名 說 明
doc 整個 HTML 文檔
html_attribs <html>標籤的屬性
html <html> 標籤中的內容
head <head> 標籤中的內容
title <title> 標籤中的內容
metas 一組 <meta> 標籤
styles 層疊樣式表定義
body_attribs <body> 標籤的屬性
body <body> 標籤中的內容
navbar 用戶定義的導航條
content 用戶定義的頁面內容
scripts 文檔底部的 JavaScript 聲明session
最經常使用的SQLAlchemy列類型
類型名 Python類型 說 明
Integer int 普通整數,通常是 32 位
SmallInteger int 取值範圍小的整數,通常是 16 位
BigInteger int 或 long 不限制精度的整數
Float float 浮點數
Numeric decimal.Decimal 定點數
String str 變長字符串
Text str 變長字符串,對較長或不限長度的字符串作了優化
Unicode unicode 變長 Unicode 字符串
UnicodeText unicode 變長 Unicode 字符串,對較長或不限長度的字符串作了優化
Boolean bool 布爾值
Date datetime.date 日期
Time datetime.time 時間
DateTime datetime.datetime 日期和時間
Interval datetime.timedelta 時間間隔
Enum str 一組字符串
PickleType 任何 Python 對象 自動使用 Pickle 序列化
LargeBinary str 二進制文件app
最常使用的SQLAlchemy列選項
選項名 說 明
primary_key 若是設爲 True ,這列就是表的主鍵
unique 若是設爲 True ,這列不容許出現重複的值
index 若是設爲 True ,爲這列建立索引,提高查詢效率
nullable 若是設爲 True ,這列容許使用空值;若是設爲 False ,這列不容許使用空值
default 爲這列定義默認值
經常使用的SQLAlchemy關係選項
選項名 說 明
backref 在關係的另外一個模型中添加反向引用
primaryjoin 明確指定兩個模型之間使用的聯結條件。只在模棱兩可的關係中須要指定
lazy 指定如何加載相關記錄。可選值有 select (首次訪問時按需加載)、 immediate (源對象加
載後就加載)、 joined (加載記錄,但使用聯結)、 subquery (當即加載,但使用子查詢),
noload(永不加載)和 dynamic (不加載記錄,但提供加載記錄的查詢)
uselist 若是設爲 Fales ,不使用列表,而使用標量值
order_by 指定關係中記錄的排序方式
secondary 指定多對多關係中關係表的名字
secondaryjoin SQLAlchemy 沒法自行決定時,指定多對多關係中的二級聯結條件
經常使用的SQLAlchemy查詢過濾器
過濾器 說 明
filter() 把過濾器添加到原查詢上,返回一個新查詢
filter_by() 把等值過濾器添加到原查詢上,返回一個新查詢
limit() 使用指定的值限制原查詢返回的結果數量,返回一個新查詢
offset() 偏移原查詢返回的結果,返回一個新查詢
order_by() 根據指定條件對原查詢結果進行排序,返回一個新查詢
group_by() 根據指定條件對原查詢結果進行分組,返回一個新查詢
最常使用的SQLAlchemy查詢執行函數
方 法 說 明
all() 以列表形式返回查詢的全部結果
first() 返回查詢的第一個結果,若是沒有結果,則返回 None
first_or_404() 返回查詢的第一個結果,若是沒有結果,則終止請求,返回 404 錯誤響應
get() 返回指定主鍵對應的行,若是沒有對應的行,則返回 None
get_or_404() 返回指定主鍵對應的行,若是沒找到指定的主鍵,則終止請求,返回 404 錯誤響應
count() 返回查詢結果的數量
paginate() 返回一個 Paginate 對象,它包含指定範圍內的結果
Flask-Login要求實現的用戶方法
方 法 說 明
is_authenticated() 若是用戶已經登陸,必須返回 True ,不然返回 False
is_active() 若是容許用戶登陸,必須返回 True ,不然返回 False 。若是要禁用帳戶,能夠返回 False
is_anonymous() 對普通用戶必須返回 False
get_id() 必須返回用戶的惟一標識符,使用 Unicode 編碼字符串
Flask-Mail SMTP服務器的配置配 置 默認值 說 明MAIL_SERVER localhost 電子郵件服務器的主機名或 IP 地址MAIL_PORT 25 電子郵件服務器的端口MAIL_USE_TLS False 啓用傳輸層安全(Transport Layer Security,TLS)協議MAIL_USE_SSL False 啓用安全套接層(Secure Sockets Layer,SSL)協議MAIL_USERNAME None 郵件帳戶的用戶名MAIL_PASSWORD None 郵件帳戶的密碼