
本文详解如何在 Django 中安全、规范地将模型 ID 从 HTML 模板经由超链接()传递至视图函数,并在 ex_action 视图中正确接收和使用该参数,避免 MultiValueDictKeyError 或 TemplateSyntaxError。
本文详解如何在 django 中安全、规范地将模型 id 从 html 模板经由超链接()传递至视图函数,并在 ex_action 视图中正确接收和使用该参数,避免 multivaluedictkeyerror 或 templatesyntaxerror。
在 Django 开发中,常需从列表页(如问题列表)点击按钮跳转至详情或操作页,并携带当前条目的唯一标识(如 problem.id)。但直接在 中拼接查询参数(如 ?problem_id=123)虽可行,却存在 URL 可读性差、缓存干扰、安全性弱等问题;而原代码中混用
✅ 推荐方案:使用 URL 路径参数(URLconf 参数捕获)
这是 Django 官方推荐、语义清晰、RESTful 风格的做法。
第一步:配置 URL 路由(urls.py)
确保路由明确捕获 problem_id,并指定类型为 int(防止非法字符串输入):
# urls.py
from django.urls import path
from . import views
urlpatterns = [
# ✅ 正确:路径参数捕获,类型强约束
path('ex-action/<problem_id>/', views.ex_action, name='ex_action'),
# ❌ 错误示例(勿用):path('ex-action/?problem_id=<problem_id>', ...) —— 查询参数不能写在 path 中
]</problem_id></problem_id>
第二步:更新模板中的链接生成逻辑
移除无效的










