使用Flask建立新專案(1)
阿新 • • 發佈:2019-01-04
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)