Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0570
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---- 上次 了解到
路由- 用装饰器 声明url
- 再 将路由 封装成 函数
- url 中 可以包含
变量- 将
变量作为参数传入处理函数 - 进行处理
- 将
| 路由类型 | 路由定义语法 | 匹配规则说明 | 示例 URL 及对应处理逻辑 |
|---|---|---|---|
| 字符串地址(无约束) | /user/ | 匹配任意字符串(除 / 外 ) | 如 localhost:5000/user/oeasy ,username 为 oeasy ,返回 User oeasy |
| 整数类型约束 | /post/int:post_id | 仅匹配整数形式内容 | 如 localhost:5000/post/123 ,post_id 为 123 ,返回 Post 123 |
| 路径类型约束 | /path/path:subpath | 匹配包含 / 的完整路径片段 | 如 localhost:5000/path/a/b/c ,subpath 为 a/b/c ,返回 Subpath a/b/c |
- 大型应用 有各种 要处理的url
- 都要 放 app.py 里
- 能分门别类 放到 不同py文件 中吗??
- 将 所有的路由
- 都放在
app.py里
- 都放在
- 就像
- 将 所有的东西
- 都堆到
一个箱子里
- 复杂项目
- 需要 分门别类
- 将路由 分门别类
- 分流到 另一个 py文件
- 专门 进行处理 ?🤔
- 修改的时候
- 比较容易查找
- 如何把 路由 分门别类 呢?
- 建立 网站目录myproject
- 进入目录
mkdir myproject
cd myproject
- 编辑reply文件
vi reply.py
- 注意不是
app.py哦
- 在 项目
根目录下- 建立 reply.py
- 处理
/reply路由
from flask import Blueprint
app_reply = Blueprint("reply", __name__)
@app_reply.route('/reply')
def reply():
return 'oeasy redirects here o'
- 这个代码 没有app.run
- 能跑起来吗?🤔
python3 relpy.py
- 运行是没有问题的
- 但是 没有 服务器启动
- 因为 app.run 没有被调用
- 那这个 代码有什么意义呢?
- 可以 被主程序app.py 引用
vi app.py
- 在主程序(app)中
- 引用了 reply.py 中的 app_reply
from flask import Flask
from markupsafe import escape
from reply import app_reply
app = Flask(__name__)
app.register_blueprint(app_reply)
if __name__ == "__main__":
print(app.url_map)
app.run(debug=True,host="0.0.0.0",port=8081)
- 这就是 蓝图(blue_print)
- 将reply.py中的路由
- 作为 蓝图 注册到了
- 主程序app.py中
- 尝试运行
nohup python3 app.py >> flask.log 2>&1 &
- 火狐打开/reply
firefox http://localhost:8081/reply &
- 对/reply 路由成功
- 观察日志
vi flask.log
- 确实可以访问
- 状态码 为 200
- 两个处理文件
- app.py 和 reply.py
- 都位于 项目根目录
- 还是 有点乱
- 可以放在 不同的 文件夹下 吗?
- 观察现状
- 准备修改
- 在项目根下 建立文件夹path
- 把reply.py 移动进去
mkdir path
mv reply.py path
- 刷新现状
- 修改文件
vi app.py
- 修改app.py如下图所示
- 指定 reply的路径 为 path
- 保存并退出
- 火狐 再浏览 /reply
firefox http://localhost:8081/reply &
- 浏览器 有响应
- 再 刷新日志
tail -n 10 flask.log
- 日志 记录了
- 代码的 修改 和 更新
- 本次响应
- 路由地图啥样?
- 输出 路由地图
- 子路由 也被添加到了 规则中
- 这次 实现了
- 动态 分配路由的 效果
- 可以 把路由工作
- 动态地 分配给不同的文件 来处理
- 这样就 可以实现 模块封装 了
- 不同模块的 py文件
- 放到不同的 文件夹
- 路由规则中
- 始终有一个
- 映射到static文件夹的
- 路由
- 这如何理解?🤔
- 下次再说!👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。














