面向?qū)ο蟮幕舅枷耄憾嗑酆稀⑸倮^承、低(松)耦合、高內(nèi)聚
創(chuàng)新互聯(lián)成立于2013年,先為義縣等服務(wù)建站,義縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為義縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。1、django的松耦合:體現(xiàn)在url和視圖函數(shù)之間,兩個之間的更改不需要依賴于對方內(nèi)部構(gòu)造
2、flask的blueprint:(藍(lán)圖/藍(lán)本)定義了可應(yīng)用于單個應(yīng)用的視圖,模板,靜態(tài)文件的集合,將應(yīng)用組織成了不同的組件;我理解上就是模塊化,獨(dú)立。
比喻舉例
情景一:兩個人去吃麻辣香鍋,點(diǎn)一鍋上來,簡單方便吃的津津有味
【兩個人開發(fā)的一個系統(tǒng),放在一個文件內(nèi),傳送拷貝方便,也很好理解溝通】
情景二:有一天同學(xué)聚餐,六十多人,點(diǎn)好幾大鍋,里邊什么都有,那就尷尬了,有的人不吃辣,有的人不吃這不吃那,一個菜一個碗?yún)^(qū)分開大家好弄
【六十個人開發(fā)系統(tǒng),同時從100行編輯文件,提交上去合并時就0疼了,各部分獨(dú)立出來,各自修改自己的部分,就顯得很和平了】
1:原始視圖:
# views.py
#!/usr/local/bin/python3
# -*- encoding: utf-8 -*-
from app import app
@app.route('/user/index')
def index():
return 'user_index'
@app.route('/user/show')
def show():
return 'user_show'
@app.route('/user/add')
def add():
return 'user_add'
@app.route('/admin/index')
def adminindex():
return 'admin_index'
@app.route('/admin/show')
def adminshow():
return 'admin_show'
@app.route('/admin/add')
def adminadd():
return 'admin_add'
#上面6個視圖,分別對應(yīng)admin,user兩個用戶的三個功能,index、add、show
#如果admin、user不止三個功能,幾百個,幾千個,那僅view的代碼就不可review和維護(hù)了
#如果多個人同時開發(fā)admin,同時寫代碼提交,版本控制就會城災(zāi)難
#如果我們要棄用admin功能塊,那我們要刪除多少行
2、使用藍(lán)圖使之pythonic
# admin.py
from flask import Blueprint,render_template, request
admin = Blueprint('admin', __name__)
@admin.route('/index')
def index():
return render_template('admin/index.html')
@admin.route('/add')
def add():
return 'admin_add'
@admin.route('/show')
def show():
return 'admin_show'
# user.py
from flask import Blueprint, render_template, redirect
user = Blueprint('user',__name__)
@user.route('/index')
def index():
return render_template('user/index.html')
@user.route('/add')
def add():
return 'user_add'
@user.route('/show')
def show():
return 'user_show'
# views.py
from app import app
from .user import user
from .admin import admin
#注冊藍(lán)圖并且設(shè)置request url條件
app.register_blueprint(admin,url_prefix='/admin')
app.register_blueprint(user, url_prefix='/user')
#現(xiàn)在再來回答上面三個問題就好回答了吧
個人:大型應(yīng)用先用 分區(qū)式,每個分區(qū)式內(nèi)用功能式
功能式架構(gòu)
yourapp/
__init__.py
static/
templates/
home/
control_panel/
admin/
views/
__init__.py
home.py
control_panel.py
admin.py
models.py
分區(qū)式架構(gòu)
官方是這么說的:像常規(guī)的應(yīng)用一樣,藍(lán)圖被設(shè)想為包含在一個文件夾中。當(dāng)多個藍(lán)圖源于同一個文件夾時,可以不必考慮上述情況,但也這通常不是推薦的做法。
yourapp/ __init__.py admin/ __init__.py views.py static/ templates/ home/ __init__.py views.py static/ templates/ control_panel/ __init__.py views.py static/ templates/ models.py
參考:https://spacewander.github.io/explore-flask-zh/7-blueprints.html
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。