Flask目录结构路由重定向简单实例讲解——轻量级的 Python Web 框架

假设一个flask目录结构如下:

复制代码
my_flask_app/
│
├── app.py
├── routes/
│   ├── __init__.py
│   ├── ZhejiangProvince/
│   │   ├── __init__.py
│   │   ├── la.py
│   │   └── el.py
│   ├── GuangdongProvince/
│   │   ├── __init__.py
│   │   ├── la.py
│   │   └── el.py
│   ├── wia.py
├── static/
│   ├── css/
│   ├── js/
│   ├── img/
│   │   ├── LA.png
│   │   ├── EL.png
│   └── ...
├── templates/
│   ├── index.html
│   ├── layout.html
│   ├── ZhejiangProvince/
│   │   ├── la.html
│   │   ├── el.html
│   ├── GuangdongProvince/
│   │   ├── la.html
│   │   ├── el.html
│   └── ...
├── instance/
│   ├── config.py
├── config.py
├── requirements.txt
├── venv/
└── README.md

我们关心的是在index.html中点击图标或文字怎么跳转到另一个html页面。

这就需要两个东西:蓝图实例和蓝图名称。

**Step1:创建蓝图实例、**定义蓝图中的路由

python 复制代码
from flask import Blueprint

# 创建蓝图实例
zj_la_bp = Blueprint('zj_la', __name__)

@zj_la_bp.route('/LA', methods=['GET', 'POST'])
def LA():
    if request.method == 'POST':
        # 处理表单提交的代码
        pass
    return render_template('ZhejiangProvince/la.html')

'zj_la_bp' 是蓝图实例的变量名,用于在 Python 代码中引用和操作蓝图。
'zj_la' 是蓝图的名称字符串,用于标识蓝图并在生成 URL 时使用。

关于 **'zj_la_bp'和'zj_la'**的使用,可以简单记为: 在前端使用'zj_la',在后端使用zj_la_bp'。
(这里在前端和在后端是指在关于前端的代码中和在关于后端的代码中)。

在前端使用'zj_la',在后端使用zj_la_bp'。:

html 复制代码
例如:
  在后端:
     @zj_la_bp.route('/LA', methods=['GET', 'POST'])
  在前端:
     return redirect(url_for('zj_la.LAdocxGenerate'))
     <a href="{{ url_for('zj_la.LA') }}">

Step2:在 app.py 中注册蓝图:

python 复制代码
from flask import Flask, redirect, url_for, render_template
from routes.ZhejiangProvince.la import zj_la_bp

app = Flask(__name__)
app.secret_key = 'your_secret_key'

# 注册蓝图并指定 URL 前缀
app.register_blueprint(zj_la_bp, url_prefix='/zj/la')

@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

上述代码就会有一个URL: http://yourdomain.com/zj/la

Step3:在 index.html 模板中使用 url_for 函数生成 URL

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Index Page</title>
</head>
<body>
    <div class="index">
        <div class="LA">
            <!-- ************************************************************** -->
            <a href="{{ url_for('zj_la.LA') }}">
                <img src="{{ url_for('static', filename='img/LA.png') }}" alt="LA">
                <p>浙江省xxxx</p>
            </a>
            <!-- ************************************************************** -->
        </div>
    </div>
</body>
</html>
相关推荐
不一样的故事12614 小时前
Prompt 工程(Prompt Engineering)
前端·人工智能·python
我命由我1234514 小时前
6-2.Python 异常处理 - 异常捕获(捕获指定异常、常见异常类型、异常信息)
java·运维·开发语言·python·http·https·java-ee
zh路西法14 小时前
【模型式强化学习】(三):MBPO——短轨迹生成与模型数据驱动的策略优化
python·强化学习·pe·sac·pets·mbpo·mbrl
Angeldream12314 小时前
第 9 章 医学影像项目实战
大数据·图像处理·人工智能·python·医学影像处理
ZhengEnCi14 小时前
一亿条数据取前100条完全指南:从全量排序到分块流式最小堆的4种解法实测
python·算法·排序算法
2601_9679791214 小时前
AccessControl 5.4 macOS Python 3.9 版本安装包
python·macos·security·accesscontrol·permissions
染指111014 小时前
157.Agent-LangGraph-工具(实现ReAct Agent模式)
开发语言·人工智能·python·langchain·agents
程序猿乐锅15 小时前
【从0-1学习Python | 第九篇】继承
开发语言·后端·python·学习·fastapi
青少儿编程课堂15 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:位运算实战——二进制权限与最大异或解析
c++·python·算法·bfs·信息学竞赛
在世修行15 小时前
智学文枢:理科分析引擎
python·ai·pyside·理科教学