Flask蓝图遇到的问题
欢迎加入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蓝图遇到的问题的更多相关文章
- Flask 蓝图(Blueprint)
蓝图使用起来就像应用当中的子应用一样,可以有自己的模板,静态目录,有自己的视图函数和URL规则,蓝图之间互相不影响.但是它们又属于应用中,可以共享应用的配置.对于大型应用来说,我们可以通过添加蓝图来扩 ...
- flask 蓝图
转自:http://spacewander.github.io/explore-flask-zh/7-blueprints.html 蓝图 什么是蓝图? 一个蓝图定义了可用于单个应用的视图,模板,静态 ...
- Flask蓝图目录、Flask-SQLAlchemy、Flask-Script、Flask-Migrate
一.Flask蓝图目录 我们之前写的Flask项目都是自己组织的目录结构,其实Flask官方有其推荐的目录结构,以下就是一个符合官方推荐的Flask小型应用的项目结构目录示例,如下: 如图,这就是我们 ...
- Flask蓝图的增删改查
怎样用flask蓝图来实现增删改查呢?请看下面的内容 这是我们的目录结构 从图中可以看出每一个功能都有一个各自的文件夹 首先我们要自己先来创建一个数据,在Flask_data.py中写入如下内容: S ...
- Flask蓝图基本使用
Flask蓝图基本使用 Flask通过使用蓝图将视图函数模块化,使应用显得更加规整 比如我们的应用的视图函数包括用户相关和文章相关,那么我们可以通过建立两个py文件分别存储两类视图函数 user.py ...
- Flask蓝图Blueprint和特殊装饰器
Flask 中的 蓝图 Blueprint 不能被run的flask实例:相当于django中的app01 应用 蓝图作用:功能隔离 路由隔离 Blueprint就是 一个不能run的flask 蓝图 ...
- Flask 蓝图进行路由分发.md
Flask 蓝图进行路由分发 Flask虽然说是一个轻型web框架,但也总不能用一个py文件写完全部view吧,所以我们要把路由分到不同的py文件中.这就需要用到蓝图了. 一 创建一个py文件 用于处 ...
- Flask 蓝图(Blueprint)使用方式解析
Flask蓝图提供了模块化管理程序路由的功能,使程序结构清晰.简单易懂.下面分析蓝图的使用方法 假如说我们要为某所学校的每个人建立一份档案,一个很自然的优化方式就是这些档案如果能分类管理,就是说假如分 ...
- 测试平台系列(4) 使用Flask蓝图(blueprint)
使用Flask蓝图(blueprint) 回顾 先来看一下上一篇的作业吧,使用「logbook」的时候,遇到了时区不对的情况.那么我们怎么去解决这个问题呢? 实际上logbook默认采用的是世界标准时 ...
随机推荐
- vue-snippet-模板
"template": { "prefix": "template", "body": [ "<temp ...
- RHEL7-Vsftpd匿名用户
实现:匿名用户创建目录,可以上传.下载文件,但是不可删除文件,禁止本地用户登陆. Vsftpd.conf部分参数 第一步:虚拟机挂载镜像 略 第二步:执行挂载命令 略 第三步:编写yum仓库文件 略 ...
- 微服务SpringCloud之GateWay熔断、限流、重试
纯洁的微笑的Spring Cloud系列博客终于学完了,也对Spring Cloud有了初步的了解. 修改请求路径的过滤器 StripPrefix Filter 是一个请求路径截取的功能,我们可以利用 ...
- 装上linux后的准备工作
A.修改对应网卡的IP地址的配置文件 1 2 3 4 5 6 7 8 # vi /etc/sysconfig/network-scripts/ifcfg-eth0 IPV6INIT=no #关闭 ...
- java编程思想第四版第七章总结
1. 实现类的复用通常有两种方式 组合:在新的类中产生现有类的对象 继承:按照现有类的类型来创造新类 2. 一个特殊的方法toString() 在非基本类型的对象中, 都有toString()方法 当 ...
- 力扣(LeetCode)种花问题 个人题解
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有.可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去. 给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花 ...
- django:runserver实现远程访问
如果是在另一台电脑上web访问要用 python manage.py ip:port (一般使用8000)的形式:监听所有ip用0.0.0.0如下: 1 2 3 python manage.py ru ...
- 学习记录:《C++设计模式——李建忠主讲》5.“对象性能”模式
对象性能模式:面向对象很好地解决了抽象地问题,但是必不可免地要付出一定地代价.对于通常情况来讲,面向对象地成本大都可以忽略不计,但某些情况,面向对象所带来地成本必须谨慎处理. 典型模式:单件模式(Si ...
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.2 路由和HTTP方法
ASP.NET Core 3.x 的路由 路由机制会把一个请求的URI映射到一个Controller上面的Action,所以当你发送一个HTTP请求的时候,MVC框架会解析这个请求的URI,并尝试着把 ...
- call() 、 apply() 、bind()方法的作用和区别!
从一开始,我是在书上看到关于bind().call() 和 apply(), 不过长久以来,在工作中与网上接触到了很多关于这三个方法的使用场景,对这三个方法也算是比较熟悉了.所以把他们的作用和区别简单 ...