1. 程式人生 > >使用Flask建立新專案(1)

使用Flask建立新專案(1)

Flask開啟一個新專案:

  • 簡單頁面的顯示
  • 真實專案的建立
    1.manage.py控制檯
    2.config.py配置檔案
    3.extensions.py擴充套件檔案
    4.app的init.py檔案
    5.views的main.py藍圖檔案
    6.views的init.py藍圖檔案

檔案目錄結構:

目錄結構

簡單的頁面顯示:
# 匯入類庫
from flask import Flask

# 建立應用例項
app = Flask(__name__)

# 新增檢視函式
@app.route('/')
def index():
    return '<h1>Hello Flask!</h1>'
# 執行例項 if __name__ == '__main__': app.run()
真實專案的建立:

關於flask-script:
flask-script就是一個flask終端執行的解析器;可以做到開發測試完畢後,不修改任何程式碼就可以完成專案的部署,是通過傳遞不同的啟動引數完成的。
1.manage.py
控制檯檔案,用於執行整個應用程式的入口。執行的命令是在cmd中輸入以下程式碼:

python manage.py runserver
import os
from flask_script import Manager
from flask_migrate import
MigrateCommand from app import create_app # 呼叫工廠方法建立應用例項 config_name = os.environ.get('FLASK_CONFIG') or 'default' app = create_app(config_name=config_name) manager = Manager(app) manager.add_command('db', MigrateCommand) if __name__ == '__main__': manager.run()

2.config.py:
配置檔案,裡面存放各種類庫所需要的配置資訊,使用時只需要從該檔案中匯入到相關檔案中。

import os

#獲得當前檔案所在的資料夾目錄
base_dir = os.path.abspath(os.path.dirname(__file__))

#
class Config:
    #祕鑰設定
    SECRET_KEY = '123456'
    #資料庫設定
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    #郵件傳送設定
    MAIL_SERVER =  os.environ.get('MAIL_SERVER')
    MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
    MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
    #自動載入模板
    TEMPLATES_AUTO_RELOAD = True
    #檔案上傳設定
    MAX_CONTENT_LENGTH = 8*1024*1024
    UPLOADED_PHOTOS_DEST = os.path.join(base_dir, 'static/upload')

    # 初始化函式,完成特定環境的初始化操作
    @staticmethod
    def init_app(app):
        pass

# 開發環境配置
class DevelopmentConfig(Config):
    SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(base_dir, 'blog-dev.sqlite')

# 配置字典
config = {
    'default':DevelopmentConfig
}

3.extensions.py:
擴充套件檔案,為flask提供各種擴充套件功能。

from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail
from flask_moment import Moment
from flask_migrate import Migrate


# 建立物件
bootstrap = Bootstrap()
db = SQLAlchemy()
mail = Mail()
moment = Moment()
migrate = Migrate(db=db)

# 初始化
def config_extensions(app):
    bootstrap.init_app(app)
    db.init_app(app)
    mail.init_app(app)
    moment.init_app(app)
    migrate.init_app(app)

4.app資料夾中__init__.py:
初始化檔案,匯入擴充套件的功能和配置資訊,然後在該檔案中,針對不同的功能,進行相應的配置。

from flask import Flask
from app.config import config
from app.extensions import config_extensions
from app.views import config_blueprint


# 封裝工廠方法,建立應用例項
def create_app(config_name='default'):
    # 建立例項
    app = Flask(__name__)
    # 初始化配置
    app.config.from_object(config[config_name])
    # 呼叫初始化函式
    config[config_name].init_app(app)
    # 配置擴充套件
    config_extensions(app)
    # 配置藍本
    config_blueprint(app)
    # 返回例項
    return app
views資料夾中:

5.main.py藍本的建立與註冊:
main藍本檔案,裡面存放相關的同一類路由,不同的類別的路由分開存放便於管理,注意需要藍本註冊後才能使用,

from flask import Blueprint

main = Blueprint('main', __name__)

@main.route('/')
def index():
    return '<h1>Hello Flask!</h1>'

6.__init__.py:
用於對藍本的配置和註冊:

from .main import main


# 藍本預設配置
DEFAULT_BLUEPRINT = (
    #(藍本,字首)
    (main,''),

    )

#封裝函式配置藍本
def config_blueprint(app):
    for blueprint, url_prefix in DEFAULT_BLUEPRINT:
        app.register_blueprint(blueprint, url_prefix=url_prefix)

實現效果圖:

實現效果圖