Python - Flask 無腦學習實踐 (二)Flask Blueprint 簡單擴展

Flask Blueprint 的作用

DOCUMENT:
使用藍圖的模塊化應用
Flask的 app 和 Blueprint藍圖 就好比 Django 的project 和 app, 可以使應用模塊化

1. url_prefix & static_folder & template_folder爲可選參數。
2. 不定義template_folder,默認去主app配置的模板目錄下查找模板(一般爲templates);
3. 如果定義了template_folder,且template_folder與templates的模板文件重名,優先使用templates的模板文件。
4. static_folder用法和template_folder類似。
5. 項目不大的話,儘量用主app默認的template_folder和static_folder。
  • 一個項目可以具有多個Blueprint
  • 可以將一個Blueprint註冊到任何一個未使用的URL下比如 “/”、“/sample”或者子域名
  • 在一個應用中,一個模塊可以註冊多次
  • Blueprint可以單獨具有自己的模板、靜態文件或者其它的通用操作方法,它並不是必須要實現應用的視圖和函數的
  • 在一個應用初始化時,就應該要註冊需要使用的Blueprint
  • 但是一個Blueprint並不是一個完整的應用,它不能獨立於應用運行,而必須要註冊到某一個應用中。
  • Blueprint對象用起來和一個應用/Flask對象差不多,最大的區別在於一個 藍圖對象沒有辦法獨立運行,必須將它註冊到一個應用對象上才能生效
    FROM: Flask-藍圖(blueprint)

目錄和代碼

./app
├── main (主體模塊:主要定義 uri 和 邏輯的 blueprint py 文件)
├── static(靜態文件目錄:css)
├── templates(模版文件目錄:通用 html )
├── app.py
# /app/main/main.py

from flask import Blueprint

''' simple case '''
app_test = Blueprint(name="app_test", import_name=__name__)

@app_test.route("/")
def show():
    return "<h1>app_test<h1>"
# /app/app.py
from flask import Flask, Response
import os

# 用戶應用的 目錄
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

# import blueprint
from main.main import app_test

app = Flask(__name__)

@app.route('/')
def index():
    return Response('<h1>hello world</h1>')

# register blueprint , set url prefix
app.register_blueprint(blueprint=app_test, url_prefix='/api')

if __name__=='__main__':
    app.run(debug=True)

當前目錄結構

./app
├── main (主體模塊:主要定義 uri 和 邏輯的 blueprint py 文件)
       ├── main.py
├── static(靜態文件目錄:css)
├── templates(模版文件目錄:通用 html )
├── app.py

顯示結果

訪問根目錄和/api 顯示如下
index
api

Reference

使用藍圖的模塊化應用
Python全棧:flask的blueprint藍圖使用
python flask框架學習(二):flask 藍圖 blueprint的應用
Flask-藍圖(blueprint)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章