1. 程式人生 > >flask學習之配置文件的加載和動態url的使用

flask學習之配置文件的加載和動態url的使用

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的方式添加配置
    1. app.config[‘DEBUG‘]=True
    2. 使用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
    develop,product app = Flask(__name__) app.config.from_object(product)
  • 通過文件名加載,了解即可
    • 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的使用