flask之蓝图系统

蓝图

对程序进行目录结构划分

不使用蓝图,自己分文件

目录结构:

-templates
-views
    -__init__.py
    -user.py
    -order.py
-app.py

app.py

from views import app
if __name__ == '__main__':
    app.run()

init.py

from flask import Flask,request
app = Flask(__name__)
#不导入这个不行
from . import account
from . import order
from . import user

user.py

from . import app
@app.route('/user')
def user():
    return 'user'

order.py

from . import app
@app.route('/order')
def order():
    return 'order'

使用蓝图之中小型系统

详见代码:pro_flask_简单应用程序目录示例.zip

目录结构:

-flask_pro
    -flask_test
        -__init__.py
        -static
        -templates
        -views
            -order.py
            -user.py
     -manage.py
        

_init.py

from flask import  Flask
app=Flask(__name__)
from flask_test.views import user
from flask_test.views import order
app.register_blueprint(user.us) # 注册应用对象到蓝图中
app.register_blueprint(order.ord)   # 注册应用对象到蓝图中

manage.py

from flask_test import  app
if __name__ == '__main__':
    app.run(port=8008)

user.py

from flask import Blueprint, url_for
us=Blueprint('user',__name__)   # 给蓝图对象取别名,用于反向解析

@us.route('/login')
def login():
    print(url_for("user"))  # 根据蓝图对象别名来进行反向解析
    return 'login'

order.py

from flask import Blueprint
ord=Blueprint('order',__name__) # 给蓝图对象取别名,用于反向解析

@ord.route('/test')
def test():
    return 'order test'

总结:

1 xxx = Blueprint(‘account‘, name,url_prefix=‘/xxx‘) :蓝图URL前缀,表示url的前缀,在该蓝图下所有url都加前缀

2 xxx = Blueprint(‘account‘, name,url_prefix=‘/xxx‘,template_folder=‘tpls‘):给当前蓝图单独使用templates,向上查找,当前找不到,会找总templates

3 蓝图的befort_request,对当前蓝图有效

4 大型项目,可以模拟出类似于django中app的概念

原文地址:https://www.cnblogs.com/XuChengNotes/p/12149316.html

时间: 2024-11-09 09:34:09

flask之蓝图系统的相关文章

Flask最强攻略 - 跟DragonFire学Flask - 第七篇 Flask 中路由系统

Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道多少? 请关注跟DragonFire学Flask 之 路由系统 ,这里有你想要的答案 1. @app.route() 装饰器中的参数 如果不明白装饰器 点击这里 methods : 当前 url 地址,允许访问的请求方式 @app.route("/inf

Flask第六篇 Flask中路由系统

Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道多少? 请关注跟DragonFire学Flask 之 路由系统 ,这里有你想要的答案 1. @app.route() 装饰器中的参数 如果不明白装饰器 点击这里 methods : 当前 url 地址,允许访问的请求方式 @app.route("/inf

flask的蓝图设计

flask的蓝图 蓝图的作用以及结构(结构的目录需要自己定义) 蓝图的作用:规范文件的目录(可以实现多个app,如admin的APP,user的APP) 比如: -proj_flask -proj_flask _admin -static -templates -__init__.py -views.py -user -static -templates -__init__.py -views.py -user.py -blog.py -__init__.py -run.py 启动文件run.p

flask多蓝图模板目录冲突解决

一.环境 Flask==0.10.1 Werkzeug==0.10.4 Jinja2==2.8 二.问题 1.蓝图架构 --app |-user |-static |-templates |-index.html |-views.py |-__init_.py |-box |-static |-templates |-index.html |-views.py |-__init_.py |-__init__.py 2.问题重现 user和box是两个蓝图,全部注册在app项目中 如果在user的

fengyun.rui大牛写的基于flask的python系统运维管理工具:happyshell

项目地址:https://github.com/rfyiamcool/happyshell/ 大牛博文:http://rfyiamcool.blog.51cto.com/1030776/1122445 源码写满"卧槽", 大牛当真性情中人,还望注意下的好. ========= 如果你是来找个趁手的python系统运维管理工具的话,那么,这不是你要的. 芮大牛写的这东西,单放giuthub上的源码,想完整跑起来可不容易,报错哗哗的. 所以,在我使用之后,我特地写篇博客来鄙视一下. 首先g

Flask blueprint蓝图按功能模块化架构实例

使用flask作为开发框架,一定要按功能模块化,否则到了后面项目越大,开发速度就越慢. 1.Flask模块化结构规划 [[email protected] yangyun]# tree . ├── asset               #资产功能目录 │   ├── __init__.py │   ├── models.py        #资产数据库结构文件 │   └── views.py         #资产视图文件 ├── user                #用户功能目录 │ 

Flask的蓝图和红图

1.蓝图 对于简单的项目来说,比如项目就只有一个user模块,我们可以都将视图函数定义在一个文件里面,不需要用到蓝图. 但是如果我们的项目有多个模块,如下有v1模块,v2模块.....等,那么如果我们将这么多的模块的视图文件都杂在一个文件中去写的话,就会导致管理非常不便: 如多人开发不同模块,会导致业务代码经常出现冲突,或者我们要弃用某个功能模块的话,需要去文件中找到所有的相关功能代码并一一删除...... 这样子做虽然没错,但是非常不符合pythonic的优雅,简洁的特性. 根据pythoni

Flask系列 路由系统

Flask路由系统细分 from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'ok' if __name__ == '__main__': app.run() 从这个简单的代码入口,来剖析一下路由@app.route('/') route():就是一个加在index()上的装饰器 ?```python def route(self, rule, **options): # rule:匹

【Flask】蓝图

蓝图应用 在Flask中的蓝图 blueprint其实本质上就是将应用解耦,不同的应用分别放在不同的文件内 蓝图一 from flask import Blueprint,render_template user = Blueprint("user",__name__,template_folder="tmp") # 参数user表示蓝图唯一标识不能重复,实例化一个蓝图(Blueprint)对象 @user.route("/user",metho