之前我们已经通过代码了解了一些Flask基本的用法,现在出现一个问题,我们要做的功能越来越多,路由是不是都要放在启动类中呢?例如我们在不同的文件都定义了一些路由,如果想要访问他们,是不是要开启很多个不同的服务呢?
Flask中提供了蓝图,专门用作Flask的模块化。对于蓝图,可以看官方介绍,这里翻译过来的:
Flask使用蓝图的概念来制作应用程序组件和支持应用程序内部或跨应用程序的通用模式。蓝图可以大大简化大型应用程序的工作方式,并为Flask扩展提供了在应用程序上注册操作的中心手段。Blueprint对象的工作方式与Flask应用程序对象类似,但实际上它不是一个应用程序。相反,它是如何构造或扩展应用程序的蓝图。
总之,蓝图可以使我们的程序更加模块化,不同功能的路由可以放在不同的模块下,最后集中到启动类中。下面看一个例子来学习使用蓝图,以上一篇代码为基础,略微修改几处。

分路由类:

from flask import Flask, render_template, Blueprintapp = Flask(__name__)
test1 = Blueprint('test1', __name__)
@test1.route('/test')
def test():return render_template('test1.html')

分路由类:

#encoding:utf-8
#!/usr/bin/env python
from flask import Flask, render_template, request, redirect, url_for, session, flash, Blueprint
import sys
reload(sys)
sys.setdefaultencoding('utf8')
app = Flask(__name__)
form_test = Blueprint('form_test', __name__)app.config['SECRET_KEY'] = 'my'
app.secret_key = 'my'@form_test.route('/index')
def index():return render_template('test1.html')@form_test.route('/login', methods=['get', 'post'])
def login():name = request.form.get('name')password = request.form.get('password')if name == 'admin' and password == '123':session['name'] = namereturn redirect(url_for('login'))if name != 'admin':flash('no this name')return render_template('test1.html', name=session.get('name'))

主路由启动类:

#encoding:utf-8
#!/usr/bin/env python
from flask import Flask, render_template
from test1 import test1
from form_test import form_test
from flask_script import Manager
app = Flask(__name__)
app.register_blueprint(form_test)
app.register_blueprint(test1)@app.route('/')
def index():num = ['tom', 'mike', 'amuxia', 'zhao', 'lisi']return render_template('/index.html', num=num)@app.errorhandler(404)
def miss(e):return render_template('404.html'), 404@app.errorhandler(500)
def error(e):return render_template('500.html'), 500if __name__=='__main__':print(app.url_map)app.run()

看以上代码大家应该也明白了,分路由中由form_test = Blueprint('form_test', __name__)创建蓝图,而后在主路由中通过app.register_blueprint(form_test)注入。

Flask蓝图使用的方法相关推荐

  1. flask蓝图的使用

    首先,我对蓝图的理解相对通俗,就是觉得蓝图对于视图方法模块化.大项目协同开发过程中的一个很好的工具. 1.下图是我们通常情况下使用的项目组织结构 看一下视图方法: #views.py 1 from a ...

  2. Flask 蓝图,数据库链接

    蓝图 使用场景 如果代码非常多,要进行归类.不同的功能放在不同的文件,把相关的视图函数也放进去. 蓝图也就是对flask的目录结构进行分配(应用于小,中型的程序) 当然对于大型项目也可以通过   ur ...

  3. No module named flask.ext.script 解决方法

    No module named flask.ext.script 解决方法 参考文章: (1)No module named flask.ext.script 解决方法 (2)https://www. ...

  4. 【Python 实战基础】Flask 蓝图 Blueprint 怎么用以及怎么集成 Bootstrap

    目录 一.简介 二.主要知识点 三.菜鸟实战 1.创建蓝图 2.注册蓝图 3.蓝图运行结果 ​4.下载和引入 Bootstrap 5.代码目录 6.Bootstrap 运行结果 一.简介 Flask ...

  5. Flask 蓝图机制及应用

    我们都知道 flask 是一个轻量级的 web 框架,相对于其他同类型框架更为灵活.轻便.安全且容易上手.开发者可以随意编写自己想要的项目结构,同时还有很多的第三方库供君选择.但是灵活的同时也带来了相 ...

  6. flask 蓝图 使用蓝图,增删改查用户

    Flask 中的  蓝图 蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统, ...

  7. Flask 蓝图 Blueprint

    为什么需要蓝图? 我们在使用Flask框架,是从写单个文件,执行hello world开始的.我们在这单个文件中可以定义路由.视图函数.定义模型等等.但这显然存在一个问题:随着业务代码的增加,将所有代 ...

  8. Day4 --- Flask 蓝图与Rest-ful

    蓝图 蓝图的使用步骤分为三步: 1.创建一个蓝图对象 2.在这个蓝图对象上进行操作, 注册路由, 指定静态文件夹, 注册模板过滤器 3.在应用对象上注册蓝图对象 开始创建 蓝图的实现 创建一个app. ...

  9. 用 Flask 来写个轻博客 (10) — M(V)C_Jinja 常用过滤器与 Flask 特殊变量及方法

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 Jinja 中常用的过滤器 default float int len ...

最新文章

  1. arm的存储保护单元MPU
  2. 百度搜索资源平台添加自己的网站
  3. Hologres揭秘:高性能原生加速MaxCompute核心原理
  4. 生产环境下的负载均衡配置
  5. toString 方法
  6. 一步一步利用django创建博客应用(三)
  7. UVA10852 Less Prime【筛选法】
  8. CSS动画实现滚动播放
  9. 2021年网络推广品牌营销渠道平台大全
  10. js中 json对象与json字符串相互转换的几种方式
  11. 树莓派利用OpenCV的图像跟踪、人脸识别等
  12. 使用手机访问电脑上开发的html页面
  13. Compose实现webView文件选择
  14. python 语言属于_python语言属于以下哪种语言?
  15. Vue的安装及使用教程【超详细图文教程】
  16. 笛卡尔坐标系和极坐标系的互相转换
  17. 华中科技大学计算机专业排名2018,2018华中科技大学专业排名及分数线 王牌专业有哪些...
  18. 刚从阿里、头条面试回来,java字符串截取后四位
  19. 我们学校的计算机房英语作文,精选我的学校英语作文6篇
  20. java如何根据模板填充数据生成word文档

热门文章

  1. 携程签约日本爱知县 探索主题游促中日交流
  2. 小红书成立六周年内部信:月活用户量已经突破8500万
  3. Python在HTTP接口测试中的应用
  4. python读取txt文件并输出到表格_Python读取txt内容写入xls格式excel中的方法
  5. matlab极坐标下的二维傅里叶变换_形象理解二维傅里叶变换
  6. tensorflow,Anaconda和 vscode 如何连接以及问题解决
  7. ie和谷歌在java中空格兼容,谷歌和IE浏览器的兼容性问题,相同的html结构竟然在两个浏览器不一样...
  8. python对比数据的原理_Python3 filecmp模块测试比较文件原理解析
  9. Golang实践录:使用gin框架实现转发功能:利用nginx转发
  10. Mysql导入导出数据总结