蓝图

作者: i_1312 | 来源:发表于2020-05-30 13:27 被阅读0次

蓝图可以把实现不同功能的module分开.也就是把一个大的App分割成各自实现不同功能的module. 我们看一个简单得例子,比如一个系统分为了用户端和管理员端,简单得写法就是:

#views.py
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两个不同用户的3个功能index,add,show,但是这样做明显与python提倡的模块化冲突,们肯定希望尽可能的把代码尽量的模块化,让我们的代码看起来更加的优雅和顺畅,这个时候flask.Blueprint(蓝图)就派上用场了。

上面得例子有两个组件(模块)admin,user,我们可以创建名为admin.py和user.py的两个文件,分别在里面创建两个蓝图的实例对象admin,user.

#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'

#要想创建一个蓝图对象,你需要import flask.Blueprint()类并用参数name和import_name初始化。import_name通常用__name__,一个表示当前模块的特殊的Python变量,作为import_name的取值。
#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'

视图函数已经分开了 再看看view.py

#view.py

from app import app
from .admin import admin
from .user import user
#这里分别给app注册了两个蓝图admin,user
#参数url_prefix='/xxx'的意思是设置request.url中的url前缀,
#即当request.url是以/admin或者/user的情况下才会通过注册的蓝图的视图方法处理请求并返回
app.register_blueprint(admin,url_prefix='/admin')
app.register_blueprint(user, url_prefix='/user')

如果项目不大的话就没有必要使用蓝图了,我们甚至可以把除了所有css,js,html的代码都写到一个文件中去。

参考:https://www.cnblogs.com/Utopia-Clint/p/10824238.html

相关文章

  • Unreal4 蓝图总览 0003bate1

    蓝图总览蓝图总览 页面包含蓝图剖析和可用的不同蓝图类型。 蓝图类型 蓝图有数种类型,每种均有其独特用法,包括创建新...

  • Unreal4 蓝图转换范例0008bate1

    蓝图转换范例 使用蓝图转换,从一个蓝图到多个蓝图进行通信。 此页面讲述如何使用蓝图转换与不同的蓝图进行交流并共享信...

  • 2018-02-24蓝图通信

    在关卡蓝图与Actor蓝图之间通信 它们是不同类型的蓝图,需要用蓝图接口来传输数据 从关卡蓝图发送数据到Actor...

  • 蓝图

    蓝图blueprint 定义蓝图 在home和admin目录下init.py中定义蓝图 调用蓝图 在home和ad...

  • flask四、进阶蓝图(Blueprints)项目模块化

    Flask 进阶蓝图(Blueprints)项目模块化 蓝图(Blueprints) ​ Flask使用蓝图的概念...

  • Unreal4蓝图宏库0048bate1

    蓝图宏库 声明和定义宏以便在其他蓝图中重复利用的蓝图。蓝图宏库(Blueprint Macro Library) ...

  • Unreal4蓝图通信用法0030bate1

    蓝图通信用法 蓝图通信不同用法的总览。 使用蓝图时,如需在蓝图之间传递或共享信息,需要使用一种形式的 蓝图通信。可...

  • 蓝图通信的四种方式

    蓝图通信的四种方法: 1直接蓝图通信;2通过事件分配器通信;3使用蓝图接口通信;4使用蓝图投射通信。 1直接蓝图通...

  • Unreal4我的蓝图0022bate1

    我的蓝图 蓝图中节点的层级详解。 我的蓝图(My Blueprint) 选项卡显示了蓝图中图表、脚本、函数、宏等内...

  • Unreal4直接蓝图通信0031bate1

    直接蓝图通信 如何从一个蓝图中使用另一个蓝图的函数、事件和变量。 直接蓝图通信(Direct Blueprint ...

网友评论

      本文标题:蓝图

      本文链接:https://www.haomeiwen.com/subject/xniczhtx.html