You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Django中单个端点双主键的URL反转与模板调用问题

Django双主键URL反转NoReverseMatch问题解决

错误根源

报错提示Reverse for 'record' with arguments '('', '')' not found,说明模板中传入URL反转的patient.id或medical_record.id为空值,核心原因是模板上下文未正确获取到有效主键变量。

解决方案

  1. 限定模板使用场景
    只有在records视图渲染的medical_record.html模板中,才能直接使用patient.id和medical_record.id生成URL——因为只有这个视图会将这两个对象传入模板上下文。如果在其他模板中需要生成该URL,必须确保上下文包含对应的主键变量,比如:
{% url 'doctor_app:record' target_patient.id target_record.id %}
  1. 核对变量名拼写
    严格匹配视图返回的上下文键与模板变量名:
    视图返回的上下文是'patient'和'medical_record',模板中必须写patient.id和medical_record.id,不能出现拼写错误(比如误写为patient_id或record)。

  2. 改用关键字参数传递(推荐)
    在模板中用关键字参数指定主键,避免参数顺序错误,写法和视图中reverse调用保持一致:

{% url 'doctor_app:record' patient_id=patient.id record_id=medical_record.id %}
  1. 验证视图内URL反转
    视图中已经通过reverse生成record_url并打印,查看控制台输出的URL是否正常。如果此处能正确生成URL,说明URL配置本身无问题,问题完全出在模板变量传递环节。

URL配置确认

你的URL规则path('medical_record/<int:patient_id>/<int:record_id>/', views.records, name='record')是正确的双主键URL写法,无需修改。

内容的提问来源于stack exchange,提问作者Erasmus Chawey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 07:33:25