
本文详解如何在 Django 中安全、规范地将模型 ID 从 HTML 模板(如 for 循环中)通过链接传递至视图函数,并在 ex_action 视图中准确获取,避免 TemplateSyntaxError 和 MultiValueDictKeyError。核心方案是使用 URL 命名路径参数而非 GET 查询字符串或表单提交。
本文详解如何在 django 中安全、规范地将模型 id 从 html 模板(如 for 循环中)通过链接传递至视图函数,并在 `ex_action` 视图中准确获取,避免 `templatesyntaxerror` 和 `multivaluedictkeyerror`。核心方案是使用 url 命名路径参数而非 get 查询字符串或表单提交。
在 Django 开发中,常见需求是:在列表页(如问题工单页)为每条记录动态生成一个操作链接,点击后跳转至详情/操作页,并携带当前记录的唯一标识(如 problem.id)。初学者常误用 标签配合表单、错误拼接查询参数或混淆 POST/GET 语义,导致模板解析失败或后端取值异常。
✅ 正确做法是:通过 URL 路由路径参数(URL pattern capture)传递数据,既语义清晰、RESTful,又无需 JavaScript 或表单封装,完全基于 Django 原生机制。
1. 配置 URL 路由(推荐使用 path())
在 urls.py 中定义带命名参数的路径:
# urls.py
from django.urls import path
from . import views
urlpatterns = [
# ✅ 正确:使用 <problem_id> 捕获整数型参数
path('ex-action/<problem_id>/', views.ex_action, name='ex_action'),
# 其他路由...
]</problem_id></problem_id>
⚠️ 注意:
中的 int 转换器确保只匹配整数,自动校验并转换类型;若用 str 或省略类型,需在视图中手动转换,且无类型保护。
2. 模板中正确构造链接(无需表单包裹)
删除冗余











