You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Flask app.py中的/gdoktor路由逻辑迁移至Package/Doktor.py?

Flask路由逻辑迁移到模块化文件的实现步骤

1. 调整项目目录结构

先创建Package目录,并在其中添加__init__.py(让Python识别为合法包)和Doktor.py文件,最终目录结构如下:

你的项目根目录/
├── app.py
├── hospital.db
├── templates/
│   ├── gdoktor.html
│   └── home.html
└── Package/
    ├── __init__.py
    └── Doktor.py

2. 编写Package/Doktor.py的代码

将原app.py中的路由逻辑迁移到这里,用Flask蓝图(Blueprint)实现模块化管理:

from flask import Blueprint, request, render_template
import sqlite3

# 创建蓝图实例
doktor_bp = Blueprint('doktor', __name__)

@doktor_bp.route("/gdoktor", methods=['GET', 'POST'])
def gdoktor():
    if request.method == 'POST':
        doktor_id = request.form['doktor_id']
        doktor_sifre = request.form['doktor_sifre']
        conn = sqlite3.connect('hospital.db')
        c = conn.cursor()
        c.execute("SELECT doktor_id,doktor_sifre FROM Doktorlar WHERE doktor_id=? and doktor_sifre=?", (doktor_id,doktor_sifre))
        doktor = c.fetchone()
        # 补充关闭数据库连接(原代码遗漏,避免资源泄漏)
        conn.close()
        
        if doktor is None:
            # 替换原控制台打印,返回带错误提示的页面给前端用户
            return render_template("gdoktor.html", error="账号或密码错误")
        else:
            return render_template("home.html")
    return render_template("gdoktor.html")

3. 修改app.py导入并注册蓝图

在app.py中导入蓝图,并注册到Flask应用实例:

from flask import Flask
from Package.Doktor import doktor_bp

app = Flask(__name__)

# 注册蓝图,将模块路由接入主应用
app.register_blueprint(doktor_bp)

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

相关注意事项

  • 数据库路径适配:如果hospital.db不在项目根目录,需调整连接路径,比如用Flask应用根目录拼接:sqlite3.connect(f"{doktor_bp.root_path}/../hospital.db")(适配Package目录下的相对路径)。
  • 路由前缀自定义:如果需要给该模块的所有路由加统一前缀,注册蓝图时可指定url_prefix,例如app.register_blueprint(doktor_bp, url_prefix='/doktor'),此时路由会变为/doktor/gdoktor。
  • 数据库逻辑封装:若后续有更多数据库操作,建议将连接、查询逻辑封装成独立工具函数,避免重复代码。

内容的提问来源于stack exchange,提问作者Richpoort123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:42:49