在flask中使用Blueprint(蓝图)将路由分开写在不同文件

本文深入讲解Flask框架中的蓝图(blueprints)概念,探讨其在大型应用中的作用及如何简化应用组件的管理和注册。通过实例展示蓝图在不同URL前缀和子域名下注册的灵活性,以及如何在同一应用中多次注册同一蓝图。
摘要由CSDN通过智能技术生成

Flask 用 蓝图(blueprints) 的概念来在一个应用中或跨应用制作应用组件和支持通用的模式。蓝图很好地简化了大型应用工作的方式,并提供给 Flask 扩展在应用上注册操作的核心方法。一个Blueprint 对象与Flask 应用对象的工作方式很像,但它确实不是一个应用,而是一个描述如何构建或扩展应用的蓝图 。


Flask 中的蓝图为这些情况设计:

把一个应用分解为一个蓝图的集合。这对大型应用是理想的。一个项目可以实例化一个应用对象,初始化几个扩展,并注册一集合的蓝图。
以 URL 前缀和/或子域名,在应用上注册一个蓝图。 URL 前缀/子域名中的参数即成为这个蓝图下的所有视图函数的共同的视图参数(默认情况下)。
在一个应用中用不同的 URL 规则多次注册一个蓝图。
通过蓝图提供模板过滤器、静态文件、模板和其它功能。一个蓝图不一定要实现应用或者视图函数。
初始化一个 Flask 扩展时,在这些情况中注册一个蓝图。
Flask 中的蓝图不是即插应用,因为它实际上并不是一个应用——它是可以注册,甚至可以多次注册到应用上的操作集合。为什么不使用多个应用对象?你可以做到那样(见应用调度 ),但是你的应用的配置是分开的,并在 WSGI 层管理。

蓝图作为 Flask 层提供分割的替代,共享应用配置,并且在必要情况下可以更改所注册的应用对象。它的缺点是你不能在应用创建后撤销注册一个蓝图而不销毁整个应用对象。

以上内容来自Flask0.10.1文档
测试项目结构:

 user.py:

#coding:utf-8
#user
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'

admin.py:

# coding:utf-8
#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'

view.py:

# coding:utf-8
from flask import Flask,request,render_template
from admin.admin import admin
from user.user import user
app=Flask(__name__)
app.register_blueprint(admin,url_prefix='/admin')
app.register_blueprint(user, url_prefix='/user')
if __name__ == '__main__':
    app.run()

转载自:https://blog.csdn.net/matengbing/article/details/78582117?utm_source=copy 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值