flask學習之配置文件的加載和動態url的使用
阿新 • • 發佈:2018-06-10
IE __name__ wsgi fig dev regex set 實現 route
七行代碼實現一個flask app
from flask import Flask
app = Flask(__name__)
@app.route(‘/‘)
def helloworld():
return ‘helloworld‘
if __name__ == ‘__main__‘:
app.run()
app.run()
只適合調試,不適合生產環境使用,生產環境應該使用Gunicorn和uWSGI啟動
配置管理
- app.config是flask.config.Config類的實例,該類繼承自Python內置數據結構dict,可以使用dict的方式添加配置
app.config[‘DEBUG‘]=True
- 使用update方法
app.config.update( DEBUG=True, SECREY_KEY=‘HELLOWORLD‘, )
一般項目的配置都統一放在一個settings.py文件中,可以集中管理配置項
# settings.py class Develop(): DEBUG = True class Product(): DEBUG = False develop = Develop() product = Product()
# app.py from flask import Flask from settings import
- 通過文件名加載,了解即可
app.config.from_pyfile(‘settings.py‘,slient=True)
- 通過環境變量加載,了解即可
app.config.from_envvar(‘settings_path‘)
動態url的配置
- flask中定義了url轉換器converter,在使用時需要實際特殊字段標記
<name>
不指定參數類型or<converter_name:name>
指定參數類型@app.route(‘/item/<id>/‘) def detali(id): return id
自定義url轉換器
繼承自BaseConverter
from werkzeug.routing import BaseConverter class CustomConverter(BaseConverter): def __init__(self,url_map,regex): super(CustomConverter, self).__init__(url_map) self.regex = regex
使用
from utils.custom_converter import CustomConverter app = Flask(__name__) app.config.from_object(develop) app.url_map.converters[‘re‘] = CustomConverter # 添加到converter列表中 @app.route(‘/hello/<re("[1-9]{2}"):cus>/‘) # re("regex") 定義匹配規則 def custom(cus): return cus
flask學習之配置文件的加載和動態url的使用