Flask项目-循环导入及蓝图
在学习flask时,肯定有许多人好奇,为什么一定要使用蓝图,而不能直接使用app应用程序对象导来导去,很多可能会说那是由于 循环导入的缘故,但是当我们通过url访问视图函数的时候,为什么会报404 not found的错误呢?下面详细介绍一下:
在启动文件 fresher.py文件中:图一
图一 fresher.py
在处理视图逻辑的文件 book.py中,图二
图二 book.py
之所以会出现 循环导入且访问时会出现404的错误:
这是由于:
在图二即book.py --- 在该app中注册的url和view_func与启动应用程序的app(即图一种实例化和启动的app.run())根本不是同一个app对象。故到我们访问应用程序时,在该app的url_map中是无法找到这种映射关系的。
那么为什么会出现两个app对象呢?
这是由于在运行 fresher.py时,会实例化一个app对象(app1),然后导入 book.py,而在book.py中又导入fresher.py模块,这时候在执行fresher.py时,又会实例化一个app(app2)。
而启动应用程序的是app1,注册路由和url则是app2,这样就会出现404的错误。
Flask项目-循环导入及蓝图的更多相关文章
- Flask项目之手机端租房网站的实战开发(三)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...
- flask项目结构(三)使用蓝图
简介: Flask中的蓝图旨在针对这些情况: 把一个应用分解成一系列的蓝图.对于大型的应用是理想化的:一个项目能实例化一个应用, 初始化一些扩展,以及注册一系列的蓝图. 以一个 URL 前缀和/或子域 ...
- 使用蓝图构建Flask项目目录
蓝图构建项目目录 什么是蓝图 一个应用中或跨应用制作应用组件和支持通用的模式 蓝图的作用 将不同的功能模块化 构建大型应用 优化项目结构 增强可读性,易于维护 蓝图构建项目目录 定义蓝图 app/ad ...
- Flask 项目目录蓝图
Flask 项目目录蓝图 小型项目 大型项目 定义蓝图 注册蓝图 template_folder="XXX" 参数是指 模板文件夹 注意 优先是找templates 在找自己指定的 ...
- python2.7环境下的flask项目导入模块失败解决办法
如下一个flask项目的目录: 这个flask项目在python3.6环境下可以正常启动,但是在python2.7环境下如下报错提示: 提醒模块找不到.如下解决方法: 只需要在views目录里面加一个 ...
- Flask项目示例目录
Flask不同于Django,Django在创建程序时自动得到必要的目录文件,而Flask则只有一个空文件夹,所以关于Flask项目的目录我们需要自行配置. 首先利用pycharm创建一个项目,在根目 ...
- 结合manage.py,在flask项目中使用websocket模块--- flask-socketio
前言: - 为什么我要使用 flask-socketio模块,而不是flask-sockets? - 因为flask-socketio与前端流行的websocket库socke ...
- flask 项目基本框架的搭建
综合案例:学生成绩管理项目搭建 一 新建项目目录students,并创建虚拟环境 mkvirtualenv students 二 安装开发中使用的依赖模块 pip install flask==0.1 ...
- 关于python项目路径导入自己写的库出错的一点思考
其实也是在写自己项目的时候遇到的,以前也遇到了但是一直采取的是回避的策略,这次总算弄清楚所以总结一下. 这个项目的顶级目录是medivac,他本身是一个python模块. 熟悉flask的人都知道,在 ...
随机推荐
- postman 测试Excel文件导入导出功能
1.导入的测试方法 选择form-data,key值填写方法对应的参数,选择File,Value处上传文件即可. 2. 导出的测试方法 在导出文件的时候,响应结果是乱码,然后在测试的时候选择下载,下载 ...
- MongoDB开发深入之二:索引
索引分类: 默认索引 单一索引 复合索引 多键索引(数组索引) 全文检索索引 2dsphere 索引 2D索引 ...... 索引属性: 到期TTL 唯一索引 部分索引 稀疏索引 索引通常能够极大的提 ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器与EasyDSS流媒体解决方案的不同
背景分析 众所周知,立足于视频软件的开发,我们的产品很多.经常有客户问到我们产品的差别以及某个产品在某个系统架构中的具体定位,因此我想通过一系列的博客说明一下,不同产品之间的区别,以及在具体架构中自身 ...
- Tplink路由器怎么设置无线桥接(转载)
原始文章路径:http://www.pc6.com/video/8548.html .以下为转载内容(少量修改) 第1步 进入副路由器后台,选择网络参数,LAN口设置,把IP地址改成目标网络同一段的I ...
- sqlite3 数据库表查看步骤
sqlite3 数据库表查看步骤 1 sqlite3 local.db2 .mode column3 .headers on4 .tables5 select * from tablename6 ;( ...
- 如何优雅的使用telnet测试端口连通性
telnet命令是TELNET协议的用户接口,它支持两种模式:命令模式和会话模式,虽然telnet支持许多命令,但大部分情况下,我们只是使用它查看目标主机是否打开了某端口(默认是23). 其执行结果有 ...
- java 正则 replace 忽略大小写
String description = model.getDescription(); if (!"".equals(description)) { //replace(/\&l ...
- Google BERT摘要
1.BERT模型 BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为dec ...
- hbase 操作
视频随笔视频地址:hbase教程 1.与传统关系型数据库的区别 hbase 传统分布式 单机列动态增减 建表时候指定只有字符串一种数据类型 数值,字符空值不被存储 存储不支持SQL 查 ...
- 分布式事务的 N 种实现
转自:http://myfjdthink.com/2019/04/26/%E5%88%86%E5%B8%83%E5%BC%8F%E4%BA%8B%E5%8A%A1%E7%9A%84-n-%E7%A7% ...