欢迎加入python学习交流群 667279387

最近在使用flask开发一个业余学习项目,由于之前都是“小打小闹”,整个程序都是放在一个文件夹里面的,也没有注意这个问题。这次项目整的稍微正规一点,发现自己没有吃透flask蓝图的功能。这里记录一下自己遇到的问题,方便以后查阅。

问题:

注册了蓝图,但是找不到对应的URL。后来发现是自己没有正确使用蓝图。

原因

下面以一个简单的示例框架进行说明。首先看下本次示例代码矿建,这也是flask框架项目的常用架构。

root@Ubuntu:~/website# tree
.
├── app
│ ├── __init__.py
│ ├── main
│ │ ├── __init__.py
│ │ └── views.py
│ └── models.py
└── manager.py 2 directories, 5 files

整个项目在website文件夹下面,底层的架构如上图所示。

下面来看看这个文件具体作用:

1、manager.py 用来启动整个程序。只需要在website目录下面执行:python manager.py就启动了整个flask项目。

下面是manager.py中的详细内容

root@Ubuntu:~/website# cat manager.py
from app import create_app app = create_app() if __name__ == '__main__':
app.run()

2、app/__init__.py文件,定义了用来创建app的函数。具体如下:

from flask import Flask

def create_app():
app = Flask(__name__) from .main import main as main_blueprint
app.register_blueprint(main_blueprint) return app

当然此处定义的比较简单,没有注册其他的组件。例如数据库的初始化。

from flask_sqlalchemy import SQLAlchemy
db=SQLAlchemy()
def create_app():
app = Flask(__name__) #初始化数据库
db.init_app(app)
db.create_all() from .main import main as main_blueprint
app.register_blueprint(main_blueprint) return app

当然其他的插件类似。

3、models.py这个里面主要是ORM的实现。本文没有用到这个数据库。所以里面是空的。

4、main/__init__.py:里面是蓝图的初始化。

from flask import Blueprint

main = Blueprint("main",__name__)

from . import views

里面只有三行代码。一开始我没有将views导入到里面,导致找不到URL。所以后续如果要再在main文件夹里面增加views文件,就必须也要import进去。否则就会提示找不到URL。

5、views.py:一个hello world 测试页面。

from . import main

@main.route("/",methods=["GET"])
def index():
return "hello world!\n"

整个项目框架就算完成了。当然后续有其他的蓝图要添加,可以和main一样操作添加即可。另外的templates和static文件都放在app这个目录下面即可。

程序运行结果。

root@Ubuntu:~/website# python manager.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [27/Dec/2017 12:56:13] "GET / HTTP/1.1" 200 -
root@Ubuntu:~# curl -X GET http://127.0.0.1:5000/
hello world!

这个框架讲的比较简单,可以参考《Flask Web开发:基于Python的Web应用开发实战》作者在github上面的代码进行进一步学习。

欢迎加入python学习交流群 667279387

Flask蓝图遇到的问题的更多相关文章

  1. Flask 蓝图(Blueprint)

    蓝图使用起来就像应用当中的子应用一样,可以有自己的模板,静态目录,有自己的视图函数和URL规则,蓝图之间互相不影响.但是它们又属于应用中,可以共享应用的配置.对于大型应用来说,我们可以通过添加蓝图来扩 ...

  2. flask 蓝图

    转自:http://spacewander.github.io/explore-flask-zh/7-blueprints.html 蓝图 什么是蓝图? 一个蓝图定义了可用于单个应用的视图,模板,静态 ...

  3. Flask蓝图目录、Flask-SQLAlchemy、Flask-Script、Flask-Migrate

    一.Flask蓝图目录 我们之前写的Flask项目都是自己组织的目录结构,其实Flask官方有其推荐的目录结构,以下就是一个符合官方推荐的Flask小型应用的项目结构目录示例,如下: 如图,这就是我们 ...

  4. Flask蓝图的增删改查

    怎样用flask蓝图来实现增删改查呢?请看下面的内容 这是我们的目录结构 从图中可以看出每一个功能都有一个各自的文件夹 首先我们要自己先来创建一个数据,在Flask_data.py中写入如下内容: S ...

  5. Flask蓝图基本使用

    Flask蓝图基本使用 Flask通过使用蓝图将视图函数模块化,使应用显得更加规整 比如我们的应用的视图函数包括用户相关和文章相关,那么我们可以通过建立两个py文件分别存储两类视图函数 user.py ...

  6. Flask蓝图Blueprint和特殊装饰器

    Flask 中的 蓝图 Blueprint 不能被run的flask实例:相当于django中的app01 应用 蓝图作用:功能隔离 路由隔离 Blueprint就是 一个不能run的flask 蓝图 ...

  7. Flask 蓝图进行路由分发.md

    Flask 蓝图进行路由分发 Flask虽然说是一个轻型web框架,但也总不能用一个py文件写完全部view吧,所以我们要把路由分到不同的py文件中.这就需要用到蓝图了. 一 创建一个py文件 用于处 ...

  8. Flask 蓝图(Blueprint)使用方式解析

    Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰.简单易懂.下面分析蓝图的使用方法 假如说我们要为某所学校的每个人建立一份档案,一个很自然的优化方式就是这些档案如果能分类管理,就是说假如分 ...

  9. 测试平台系列(4) 使用Flask蓝图(blueprint)

    使用Flask蓝图(blueprint) 回顾 先来看一下上一篇的作业吧,使用「logbook」的时候,遇到了时区不对的情况.那么我们怎么去解决这个问题呢? 实际上logbook默认采用的是世界标准时 ...

随机推荐

  1. python_day1(初始Python)

    1.编码 ASCII (英文1字节,没中文)=> GB => GBK =>uncoode (中英文都2字节) => utf-8 (可变长字节储存,中文3字节,英文1字节) 2. ...

  2. WIN7安装Docker Toolbox、制作镜像并发到阿里云

    一.安装Docker Toolbox,并配置国内源加速 WIndows7不支持Hyper-v,所以只能采用Docker Toolbox的方式使用Docker.传送门:http://mirrors.al ...

  3. 简单看看@RequestBody注解原理

    又到了很无聊的时候了,于是随便看看源码假装自己很努力的样子,哈哈哈: 记得上一篇博客随便说了一下RequestBody的用法以及注意的问题,这个注解作为非常常用的注解,也是时候了解一波其中的原理了. ...

  4. Chrome Extension 小试牛刀

    自从有了Chrome以后,就喜欢上了这个浏览器,从此IE 886了. 以前作爬虫,做登录,做数据采集,做数据处理等各种功能,后来H5出来后,出现了,除了Session/Cookie 出了Local S ...

  5. java编程思想第四版第三章要点总结

    1. 静态导入 使用import static方式导入一个类的所有方法. 例如: import static net.mindview.util.Print.*; 首先定义了一个Print类,里面有静 ...

  6. jQuery—— 选择器汇总

    jQuery里的选择器有3种: 元素选择器,id选择器, 类选择器:   $("div") // 选择所有<div>元素 $("#test") // ...

  7. C语言博客I作业09

    提问 回答 这个作业属于哪个课程 C语言程序设计Ⅱ 这个作业要求在哪里 https://www.cnblogs.com/sanying/p/11907721.html 我在这个课程的目标 掌握语句嵌套 ...

  8. 使用图数据库 Nebula Graph 数据导入快速体验知识图谱 OwnThink

    前言 本文由 Nebula Graph 实习生@王杰贡献. 最近 @Yener 开源了史上最大规模的中文知识图谱--OwnThink(链接:https://github.com/ownthink/Kn ...

  9. dom4j的测试例子和源码详解(重点对比和DOM、SAX的区别)

    目录 简介 DOM.SAX.JAXP和DOM4J xerces解释器 SAX DOM JAXP DOM解析器 获取SAX解析器 DOM4j 项目环境 工程环境 创建项目 引入依赖 使用例子--生成xm ...

  10. 研究Java语言的编译器和虚拟机源代码

    现在使用Java语言的人很多,但是了解Java语言实现的人非常少.如果要研究Java语言的实现,推荐研究Javac和虚拟机HotSpot的源代码实现,其中Javac相当于Java编译的前端,HotSp ...