如何将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
相关产品推荐
相关产品推荐

