Django urlconfig页面未找到:手动输路径可访问HTML链接跳转失败
问题解决:Django页面映射中HTML链接失效的问题
核心问题根源
直接访问http://127.0.0.1:8000/Task/add正常,但HTML内链接跳转404,本质是模板URL标签语法错误和对Django路由机制的误解。
具体错误点及修复
1. 模板URL标签语法严重错误
你的HTML代码中{% url %}标签存在多处语法问题:
- 循环链接中:
{ url '{{t}}'}"→ 缺少%(应为{% url %})、错误包裹变量、多余转义引号 - 固定链接中:
{% url 'Task:add' %}"→ 标签闭合后多了"转义引号,导致生成的URL被破坏
2. 误用静态文件路径思维
Django基于路由映射跳转,而非直接访问HTML文件,<a href="add.html">、<a href="index.html">这类写法完全无效。
修复后的完整代码
Task应用的index.html
{% extends "tasks/layout.html" %} {% block body%} <h1>Tasks</h1> <ul> {% for t in taskslist %} <li><a href="{% url 'Task:'|add:t %}">{{t}}</a></li> {% endfor %} </ul> <a href="{% url 'Task:add' %}">添加任务!</a> {% endblock %}
- 修正
{% url %}标签的语法结构,移除多余转义引号 - 使用
|add过滤器动态拼接命名路由(Task:add、Task:edit等),需后续补充对应路由和视图
Task应用的add.html
{% extends "tasks/layout.html" %} {% block body%} <h1>添加任务</h1> <form> <input type="text" name="task" /> <input type="submit" /> </form> <a href="{% url 'Task:index' %}">查看任务</a> {% endblock %}
- 移除
{% url %}标签后的多余转义引号 - 删除无效的
.html后缀链接写法
额外验证项
- 确认
settings.py的TEMPLATES配置中APP_DIRS = True(默认开启),确保Django能扫描到Task/templates/tasks目录下的模板 - 若要启用
edit、delete功能,需在Task/urls.py补充路由:
urlpatterns = [ path("", views.index, name="index"), path("add", views.add, name="add"), path("edit", views.edit, name="edit"), # 新增 path("delete", views.delete, name="delete") # 新增 ]
同时在views.py中实现对应视图函数。
内容的提问来源于stack exchange,提问作者Zoe
相关产品推荐
相关产品推荐

