一,結構flask
首先看目錄結構:app
整體結構:url
1,首先新建flask項目spa
2,在項目一級目錄中新建「apps」包,注意是包。新建他是爲了簡歷藍圖。code
3,apps下分爲cms後臺管理,front前臺頁面以及common公共頁面。orm
4,config是設置文件中間件
5,exts避免雙向引用簡歷的中間件,可參加我以前的博客。blog
藍圖結構,以cms爲例:字符串
每一個藍圖中將表單、數據模型、視圖分開來(即:forms,models,views),在views中新建藍圖:源碼
1 from flask import Blueprint 2 3 # 在‘bp = Blueprint('cms',__name__,url_prefix='cms')’中出錯了,緣由在於前綴沒加‘/’ 4 bp = Blueprint('cms',__name__,url_prefix='/cms') 5 6 @bp.route('/') 7 def index(): 8 return 'cms index'
Note:第4行要加上「/」。爲啥後面不加呢?由於後面要是加的話就會造成:「http://127.0.0.1:5000/cms//index」,固然我這裏沒寫index,可是後面加了會使得URL中也畢業加兩條//才能訪問,不加是爲了防止重複。
在cms下的init文件中有:
from .views import bp
這句話其實是把同級文件views中的bp提到cms這一級別,方便其餘文件對他import。
好比主文件puppetbbs中原本應該是「from apps.cms.views import bp as cms_bp」,可是咱們在cms/front/common中init中加入了「from .views import bp」,使得從「apps.cms」就能導入bp。且咱們用as給他取個別名。纔有下面這種簡單的調用:
from apps.cms import bp as cms_bp
最後,在主文件中記得註冊藍圖。這裏有一點須要注意:
先看源碼,blueprint這裏沒說接受字符串,所以不要用把cms_bp打引號,應該爲下面代碼:
app.register_blueprint(cms_bp) #Note:cms_bp不須要打引號