Flaskプロジェクト基本構成

5556 ワード

プロジェクト基本構成
Configクラス
  • は、まず現在のクラスで構成するクラスを定義し、そこから構成
  • をロードする.
    app = Flask(__name__)
    
    class Config(object):
        """      """
        DEBUG = True
    
    app.config.from_object(Config)
    

    テストの実行
    SQLAlchemy
  • データベース拡張をインポートし、構成に関連する構成
  • を記入します.
    from flask_sqlalchemy import SQLAlchemy
    
    ...
    
    class Config(object):
        """      """
        DEBUG = True
        #         
        SQLALCHEMY_DATABASE_URI = "mysql://root:[email protected]:3306/information"
        SQLALCHEMY_TRACK_MODIFICATIONS = False
    
    app.config.from_object(Config)
    db = SQLAlchemy(app)
    
  • は、端末においてデータベース
  • を作成する.
    mysql> create database information charset utf8;
    

    テストの実行
    Redis
  • redisストレージオブジェクトを作成し、構成に関連する構成
  • を記入する.
    import redis
    ...
    
    class Config(object):
        """      """
        ...
        # redis  
        REDIS_HOST = "127.0.0.1"
        REDIS_PORT = 6379
    
    app.config.from_object(Config)
    db = SQLAlchemy(app)
    redis_store = redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)
    

    テストの実行
    CSRF
  • 要求体を含む要求はすべてCSRF
  • を開く必要がある.
    from flask_wtf.csrf import CSRFProtect
    ...
    app.config.from_object(Config)
    ...
    CSRFProtect(app)
    

    CSRFProtectは検証のみを行い、cookieのcsrf_tokenとフォームのcsrf_tokenは自分たちで実現する必要がある
    Session
  • flask-session拡張を利用して、sessionデータをRedisに保存する
  • from flask_session import Session
    ...
    
    class Config(object):
        """      """
        SECRET_KEY = "EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA"
        ...
        # flask_session     
        SESSION_TYPE = "redis" #    session     redis  
        SESSION_USE_SIGNER = True #   cookie    session_id        
        SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT) #    redis    
        PERMANENT_SESSION_LIFETIME = 86400 # session     ,    
    
    app.config.from_object(Config)
    ...
    Session(app)
    

    テストの実行
    ドキュメントのアドレス:http://pythonhosted.org/Flask-Session/
    Flask-Scriptとデータベース移行の拡張
    from flask_script import Manager
    from flask_migrate import Migrate, MigrateCommand
    ...
    manager = Manager(app)
    Migrate(app, db)
    manager.add_command('db', MigrateCommand)
    ...
    
    if __name__ == '__main__':
        manager.run()
    

    テストの実行