扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
面向对象的基本思想:多聚合、少继承、低(松)耦合、高内聚
创新互联成立于2013年,先为义县等服务建站,义县等地企业,进行企业商务咨询服务。为义县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。1、django的松耦合:体现在url和视图函数之间,两个之间的更改不需要依赖于对方内部构造
2、flask的blueprint:(蓝图/蓝本)定义了可应用于单个应用的视图,模板,静态文件的集合,将应用组织成了不同的组件;我理解上就是模块化,独立。
比喻举例
情景一:两个人去吃麻辣香锅,点一锅上来,简单方便吃的津津有味
【两个人开发的一个系统,放在一个文件内,传送拷贝方便,也很好理解沟通】
情景二:有一天同学聚餐,六十多人,点好几大锅,里边什么都有,那就尴尬了,有的人不吃辣,有的人不吃这不吃那,一个菜一个碗区分开大家好弄
【六十个人开发系统,同时从100行编辑文件,提交上去合并时就0疼了,各部分独立出来,各自修改自己的部分,就显得很和平了】
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个视图,分别对应admin,user两个用户的三个功能,index、add、show
#如果admin、user不止三个功能,几百个,几千个,那仅view的代码就不可review和维护了
#如果多个人同时开发admin,同时写代码提交,版本控制就会城灾难
#如果我们要弃用admin功能块,那我们要删除多少行
2、使用蓝图使之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
#注册蓝图并且设置request url条件
app.register_blueprint(admin,url_prefix='/admin')
app.register_blueprint(user, url_prefix='/user')
#现在再来回答上面三个问题就好回答了吧
个人:大型应用先用 分区式,每个分区式内用功能式
功能式架构
yourapp/
__init__.py
static/
templates/
home/
control_panel/
admin/
views/
__init__.py
home.py
control_panel.py
admin.py
models.py
分区式架构
官方是这么说的:像常规的应用一样,蓝图被设想为包含在一个文件夹中。当多个蓝图源于同一个文件夹时,可以不必考虑上述情况,但也这通常不是推荐的做法。
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
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流