本文详解 flask 应用中常见的 404 错误成因,重点解决因路由未正确定义、视图函数缺失或 url 访问方式不当导致的“requested url not found”问题,并指导如何正确配置 `/adddog` 等表单页面路由。
在你的 Flask 应用中出现 404 Not Found 错误,根本原因通常不是代码逻辑错误,而是 URL 路由未被 Flask 正确注册或访问路径不匹配。从你提供的代码来看,问题集中在以下两个关键点:
✅ 1. 路由已定义,但访问方式错误
你已正确定义了两个路由:
@app.route("/viewdog")
def viewdog():
# ...
@app.route("/adddog", methods=['POST', 'GET'])
def add_stock():
return render_template('Dogsinfo.html')
这意味着只有当用户访问 http://localhost:8080/viewdog 或 http://localhost:8080/adddog 时,对应视图才会触发。
⚠️ 常见误区:直接打开 http://localhost:8080/(根路径)——该路径未定义任何 @app.route(‘/’) 处理器,因此必然返回 404。
✅ 正确做法:
- 启动应用后,终端会输出类似 * Running on http://127.0.0.1:8080 的提示;
-
手动在浏览器地址栏追加路径,例如:
http://127.0.0.1:8080/viewdog → 查看数据表
http://127.0.0.1:8080/adddog → 加载添加表单(前提是 Dogsinfo.html 存在于 templates/ 目录下)
✅ 2. 关键导入位置错误(影响可维护性与稳定性)
你将 from flask import render_template 放在了 @app.route(“/viewdog”) 定义之后:
@app.route("/viewdog")
def viewdog():
# ...
from flask import render_template # ❌ 错误:延迟导入,易引发 NameError 或模块加载异常
虽然 Python 允许这种写法,但严重违反 PEP 8 规范,且可能导致: