---恢复内容开始---

蓝图: flask模块化处理操作和URL的方式

作用:

  1. 将不同的功能模块化,实现模块化应用
  2. 构建大型应用
  3. 优化项目结构

使用步骤

  1. 创建蓝图对象
  2. 对蓝图对象进行操作(注册路由; 指定静态文件夹; 注册模板过滤器)
  3. 在应用对象上注册蓝图对象

代码操作

通过目录式结构定义蓝图

1.简单版

项目文件夹-模块文件夹-模块文件, __init__.py

from flask import Blueprint

# 1.创建蓝图
goods_dp = Blueprint('goods', __name__) # 3.和views关联起来,导入views.py 放在此处导入是延迟导入解决循环导入问题
from .views import *

项目文件夹-模块文件夹-模块文件, views.py

from goods import goods_dp

# 2.使用蓝图
@goods_dp.route('/goods/info')
def goods():
"""商品视图函数"""
return 'goods'

项目文件夹下项目文件demo1.py

from flask import Flask
from goods import goods_dp app = Flask(__name__) # 4.注册蓝图
app.register_blueprint(goods_dp) if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)

2.加强版, 一般大致是以下这种

项目文件下templates文件夹, 按不同模块建立不同文件夹, 如此处的goods文件夹; goods文件夹下建立HTML文件

goods.HTML里面放入需要添加的内容, 演示只简单操作如下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>商品模块</h1> </body>
</html>

1中的代码做下面更改

  • views.py做以下更改

  导入模块 from flask import render_template

  返回语句return render_template("goods/goods.html")

from goods import goods_dp
from flask import render_template # 2.使用蓝图
@goods_dp.route('/goods/info')
def goods():
"""商品视图函数"""
return render_template("goods/goods.html")

运行demo1文件后, 此时浏览器访问127.0.0.1:5000/goods/info, 可以网页显示  商品模块


  • 上面views.py中的代码继续更改:

  把路径中的goods去掉放入__init__.py文件

from goods import goods_dp
from flask import render_template # 2.使用蓝图
@goods_dp.route('/info')
def goods():
"""商品视图函数"""
return render_template("goods/goods.html")
  • __init__.py文件更改

加入前缀url_profix, 在蓝图上注册的路由URL自动被加上了这个前缀,这个可以保证在多个蓝图中使用相同的URL规则而不会最终引起冲突,只要在注册蓝图时将不同的蓝图挂接到不同的自路径即可

from flask import Blueprint

# 1.创建蓝图
goods_dp = Blueprint('goods', __name__, url_prefix="/goods") # 3.和views关联起来,导入views.py 放在此处导入是延迟导入解决循环导入问题
from .views import *

蓝图Blueprint的更多相关文章

  1. 第九篇 蓝图 blueprint

    在Flask中的蓝图 blueprint 的作用就是将 功能 与 主服务 分开 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_use ...

  2. 第九篇 Flask 中的蓝图(BluePrint)

    第九篇 Flask 中的蓝图(BluePrint)   蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? ...

  3. Flask路由与蓝图Blueprint

    需求分析: 当一个庞大的系统中有很多小模块,在分配路由的时候怎么处理呢?全部都堆到一个py程序中,调用@app.route? 显然这是很不明智的,因为当有几十个模块需要写路由的时候,这样程序员写着写着 ...

  4. Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)

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

  5. Flask 中的蓝图(BluePrint)

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

  6. python 全栈开发,Day120(路由系统, 实例化Flask的参数, 蓝图(BluePrint), before_request after_request)

    昨日内容回顾 1.Flask: from flask import Flask app = Flask(__name__) # 从源码中可以看出,Flask集成的run方法是由werkzeug中的ru ...

  7. 5. 使用Flask蓝图(blueprint)

    一直到现在都没有怎么写代码,可能更得比较慢. 作业回顾 先来看一下文章4的作业吧,使用logbook的时候,遇到了时区不对的情况.那么我们怎么去解决这个问题呢? 实际上logbook默认采用的是世界标 ...

  8. 蓝图-BluePrint

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

  9. 蓝图(Blueprint)详解

    Blueprint 模块化 随着flask程序越来越复杂,我们需要对程序进行模块化的处理,针对一个简单的flask程序进行模块化处理 举例来说: 我们有一个博客程序,前台界面需要的路由为:首页,列表, ...

  10. 9,Flask 中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西,在Flask中的蓝图 blueprint 也是非常宏伟的,它的作用就是将 功能 与 主服务 分开. 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的 ...

随机推荐

  1. Mysql 5.7--ubuntu18.04 安装过程及遇到的问题

    Mysql 5.7安装过程 1. 下载mysql的apt-config文件 a. https://dev.mysql.com/downloads/file/?id=477124 b. 点击downlo ...

  2. Oh-My-Zsh及主题、插件安装与配置

    切换zsh Manjaro linux默认安装了zsh,其他可能需要先安装 cat /etc/shells #查看本地有哪几种shell chsh -s /bin/zsh #切换到zsh 默认终端启动 ...

  3. (转)Extracting knowledge from knowledge graphs using Facebook Pytorch BigGraph.

    Extracting knowledge from knowledge graphs using Facebook Pytorch BigGraph 2019-04-27 09:33:58 This ...

  4. pronaunciation

    5 strong  weak s            d n            t l             th you and I  -> you an dai -> you ...

  5. .Net Core文件上传

    https://www.cnblogs.com/viter/p/10074766.html 1.内置了很多种绑定模型  缺少了一个FromFileAttribute 绑定模型 需要自己实现一个 pub ...

  6. MySQL的随机数函数rand()的使用技巧

    咱们学php的都知道,随机函数rand或mt_rand,可以传入一个参数,产生0到参数之间的随机整数,也可以传入两个参数,产生这两个参数之间的随机整数. 而在mysql里,随机数函数rand不能传参, ...

  7. Java8:Lambda表达式增强版Comparator和排序

    1.概述 在这篇教程里,我们将要去了解下即将到来的JDK 8(译注,现在JDK 8已经发布了)中的Lambda表达式——特别是怎样使用它来编写Comparator和对集合(Collection)进行排 ...

  8. 雷林鹏分享:jQuery EasyUI 数据网格 - 格式化列

    jQuery EasyUI 数据网格 - 格式化列 以下实例格式化在 easyui DataGrid 里的列数据,并使用自定义列的 formatter,如果价格小于 20 就将文本变为红色. 为了格式 ...

  9. js判断输入的input内容是否为数字

    有时候我们输入的input的内容需要判断一下是否是数字,所以为了更好的客户体验,在前端先处理一下: <input type="text" name="val&quo ...

  10. 8.3 GOF设计模式二: 适配器模式 Adapter

    GOF设计模式二: 适配器模式 Adapter  为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式  SingleTon的三个关键点  ...