Flask的路由解讀以及其配置

from flask import Flask

app =Flask(__name__)

一.配置

配置一共有四中方式html

方法一:

只能設置如下兩種屬性python

app.debug=Truemysql

app.secret_key="asdas"sql

方法二

app.config["DEBUG"]=True數據庫

方法三

app.config.from_pyfile("配置文件路徑")json

配置文件flask

DEBUG=True

方法四(推薦使用)

app.config.from_pyfile("類所在路徑.類名")緩存

配置文件安全

class 類名:
   DEBUG=True

推薦使用緣由:由於測試和上線時候DEBUG屬性再測試時候通常爲true上線爲false全部能夠把其餘公用的內容放一個基類中,下面測試和上線都繼承基類,用的時候切換類名便可服務器

Flask的默認配置屬性

'DEBUG':       get_debug_flag(default=False),  是否開啓Debug模式
        'TESTING':       False,                          是否開啓測試模式
        'PROPAGATE_EXCEPTIONS':                 None,                          
        'PRESERVE_CONTEXT_ON_EXCEPTION':        None,
        'SECRET_KEY':                           None,
        'PERMANENT_SESSION_LIFETIME':           timedelta(days=31),
        'USE_X_SENDFILE':                       False,
        'LOGGER_NAME':                          None,
        'LOGGER_HANDLER_POLICY':               'always',
        'SERVER_NAME':                          None,
        'APPLICATION_ROOT':                     None,
        'SESSION_COOKIE_NAME':                  'session',
        'SESSION_COOKIE_DOMAIN':                None,
        'SESSION_COOKIE_PATH':                  None,
        'SESSION_COOKIE_HTTPONLY':              True,
        'SESSION_COOKIE_SECURE':                False,
        'SESSION_REFRESH_EACH_REQUEST':         True,
        'MAX_CONTENT_LENGTH':                   None,
        'SEND_FILE_MAX_AGE_DEFAULT':            timedelta(hours=12),
        'TRAP_BAD_REQUEST_ERRORS':              False,
        'TRAP_HTTP_EXCEPTIONS':                 False,
        'EXPLAIN_TEMPLATE_LOADING':             False,
        'PREFERRED_URL_SCHEME':                 'http',
        'JSON_AS_ASCII':                        True,
        'JSON_SORT_KEYS':                       True,
        'JSONIFY_PRETTYPRINT_REGULAR':          True,
        'JSONIFY_MIMETYPE':                     'application/json',
        'TEMPLATES_AUTO_RELOAD':                None,
配置項名稱 說明
DEBUG 啓用/禁用調試模式
TESTING 啓用/禁用測試模式
PROPAGATE_EXCEPTIONS 顯式地容許或禁用異常的傳播。若是沒有設置或顯式地設置爲 None ,當 TESTING 或 DEBUG 爲真時,這個值隱式地爲 true.
PRESERVE_CONTEXT_ON_EXCEPTION 默認狀況下,若是應用工做在調試模式,請求上下文不會在異常時出棧來容許調試器內省。 這能夠經過這個鍵來禁用。你一樣能夠用這個設定來強制啓用它,即便沒有調試執行,這對調試生產應用頗有用(但風險也很大)
SECRET_KEY 密鑰
SESSION_COOKIE_NAME 會話 cookie 的名稱。
SESSION_COOKIE_DOMAIN 會話 cookie 的域。若是不設置這個值,則 cookie 對 SERVER_NAME 的所有子域名有效
SESSION_COOKIE_PATH 會話 cookie 的路徑。若是不設置這個值,且沒有給 '/' 設置過,則 cookie 對 APPLICATION_ROOT 下的全部路徑有效。
SESSION_COOKIE_HTTPONLY 控制 cookie 是否應被設置 httponly 的標誌, 默認爲 True
SESSION_COOKIE_SECURE 控制 cookie 是否應被設置安全標誌,默認爲 False
PERMANENT_SESSION_LIFETIME datetime.timedelta對象控制長期會話的生存時間。從 Flask 0.8 開始,也能夠用整數來表示秒。
SESSION_REFRESH_EACH_REQUEST 這個標誌控制永久會話如何刷新。若是被設置爲 True (這是默認值),每個請求 cookie 都會被刷新。若是設置爲 False ,只有當 cookie 被修改後纔會發送一個 set-cookie 的標頭。非永久會話不會受到這個配置項的影響 。
USE_X_SENDFILE 啓用/禁用 x-sendfile
LOGGER_NAME 日誌記錄器的名稱
SERVER_NAME 服務器名和端口。須要這個選項來支持子域名 (例如: 'myapp.dev:5000' )。注意 localhost 不支持子域名,因此把這個選項設置爲 「localhost」 沒有意義。設置 SERVER_NAME 默認會容許在沒有請求上下文而僅有應用上下文時生成 URL
APPLICATION_ROOT 若是應用不佔用完整的域名或子域名,這個選項能夠被設置爲應用所在的路徑。這個路徑也會用於會話 cookie 的路徑值。若是直接使用域名,則留做 None
MAX_CONTENT_LENGTH 若是設置爲字節數, Flask 會拒絕內容長度大於此值的請求進入,並返回一個 413 狀態碼
SEND_FILE_MAX_AGE_DEFAULT 默認緩存控制的最大期限,以秒計,在flask.Flask.send_static_file()(默認的靜態文件處理器)中使用。對於單個文件分別在 Flask或Blueprint上使用get_send_file_max_age()來覆蓋這個值。默認爲 43200(12小時)。
TRAP_HTTP_EXCEPTIONS 若是這個值被設置爲 True ,Flask不會執行 HTTP 異常的錯誤處理,而是像對待其它異常同樣, 經過異常棧讓它冒泡地拋出。這對於須要找出 HTTP 異常源頭的可怕調試情形是有用的。
TRAP_BAD_REQUEST_ERRORS Werkzeug 處理請求中的特定數據的內部數據結構會拋出一樣也是「錯誤的請求」異常的特殊的 key errors 。一樣地,爲了保持一致,許多操做能夠顯式地拋出 BadRequest 異常。由於在調試中,你但願準確地找出異常的緣由,這個設置用於在這些情形下調試。若是這個值被設置爲 True ,你只會獲得常規的回溯。
PREFERRED_URL_SCHEME 生成URL的時候若是沒有可用的 URL 模式話將使用這個值。默認爲 http
JSON_AS_ASCII 默認狀況下 Flask 使用 ascii 編碼來序列化對象。若是這個值被設置爲 False , Flask不會將其編碼爲 ASCII,而且按原樣輸出,返回它的 unicode 字符串。好比 jsonfiy 會自動地採用 utf-8 來編碼它而後才進行傳輸。
JSON_SORT_KEYS 默認狀況下 Flask 按照 JSON 對象的鍵的順序來序來序列化它。這樣作是爲了確保鍵的順序不會受到字典的哈希種子的影響,從而返回的值每次都是一致的,不會形成無用的額外 HTTP 緩存。你能夠經過修改這個配置的值來覆蓋默認的操做。但這是不被推薦的作法由於這個默認的行爲可能會給你在性能的代價上帶來改善。
JSONIFY_PRETTYPRINT_REGULAR 若是這個配置項被 True (默認值), 若是不是 XMLHttpRequest 請求的話(由 X-Requested-With 標頭控制) json 字符串的返回值會被漂亮地打印出來。

Flask-SQLAlchemy配置項整理

配置項名稱 說明
SQLALCHEMY_DATABASE_URI 用於鏈接數據的數據庫。例如: sqlite:////tmp/test.db mysql://username:password@server/db
SQLALCHEMY_BINDS 一個映射綁定 (bind) 鍵到 SQLAlchemy 鏈接 URIs 的字典。 更多的信息請參閱 綁定多個數據庫
SQLALCHEMY_ECHO 若是設置成 True,SQLAlchemy 將會記錄全部 發到標準輸出(stderr)的語句,這對調試頗有幫助。
SQLALCHEMY_RECORD_QUERIES 能夠用於顯式地禁用或者啓用查詢記錄。查詢記錄在調試或者測試模式下自動啓用。更多信息請參閱 get_debug_queries()
SQLALCHEMY_NATIVE_UNICODE 能夠用於顯式地禁用支持原生的 unicode。這是 某些數據庫適配器必須的(像在 Ubuntu 某些版本上的 PostgreSQL),當使用不合適的指定無編碼的數據庫默認值時。
SQLALCHEMY_POOL_SIZE 數據庫鏈接池的大小。默認是數據庫引擎的默認值 (一般是 5)。
SQLALCHEMY_POOL_TIMEOUT 指定數據庫鏈接池的超時時間。默認是 10。
SQLALCHEMY_POOL_RECYCLE 自動回收鏈接的秒數。這對 MySQL 是必須的,默認 狀況下 MySQL 會自動移除閒置 8 小時或者以上的鏈接。 須要注意地是若是使用 MySQL 的話, Flask-SQLAlchemy 會自動地設置這個值爲 2 小時。
SQLALCHEMY_MAX_OVERFLOW 控制在鏈接池達到最大值後能夠建立的鏈接數。當這些額外的鏈接回收到鏈接池後將會被斷開和拋棄。
SQLALCHEMY_TRACK_MODIFICATIONS 若是設置成 True (默認狀況),Flask-SQLAlchemy 將會追蹤對象的修改而且發送信號。這須要額外的內存, 若是沒必要要的能夠禁用它。

二.路由

路由參數

rule--->路由
endpoint--->反向解析的別名
view_func---->當前的視圖函數
methods ---->容許請求的方式["get","post"],若是不傳默認容許的是get請求

進入源碼他設置路由本質調用

def decorator(f):
    endpoint = options.pop("endpoint", None)
    self.add_url_rule(rule, endpoint, f, **options) #這裏的self是咱們以前定義的app
    return f

全部咱們設置路由器本質

# @app.route('/')
#至關於
def hello():
    return'xxx'
app.add_url_rule('/',view_func=hello)

關於反向解析

url_for(別名)

舉例

from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route('/login')
def login():
    return redirect(url_for('aaa'))

@app.route('/',endpoint='aaa')
def hello():
    return'xxx'

if __name__ == '__main__':
    app.run()

我的感受很是很是雞肋!!!!!!

相關文章
相關標籤/搜索