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

Django中使用reverse反转多参数URL时出现错误

解决Django URL多参数测试失败问题

错误原因及修复步骤

1. 测试方法参数错误

测试类中的方法是实例方法,必须以self作为第一个参数。你的测试方法直接定义id_patient和protocol作为参数,导致Django调用测试时无法传递正确参数,引发TypeError。

修复后的测试代码:

# test_urls.py
from django.test import SimpleTestCase
from django.urls import reverse, resolve
from cardiotesting.views import *

class TestUrls(SimpleTestCase):
    def test_new_cardio(self):  # 改为self作为第一个参数
        id_patient = '05'
        protocol = 'fox'
        url = reverse('new_cardio_testing', args=[id_patient, protocol])
        print(resolve(url))

2. URL配置缺失第二个参数

你的URL路径仅定义了id_patient一个参数,但视图需要接收两个参数,导致reverse传递多参数时找不到匹配的URL规则。

修复后的urls.py:

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    # 新增第二个参数<str:protocol>
    path('new/<str:id_patient>/<str:protocol>', views.new_cardio_testing, name='new_cardio_testing'),
]

3. 视图函数参数缺失request

Django视图函数的第一个参数必须是request对象,之后才是URL捕获的参数。你的视图直接定义id_patient和protocol,不符合Django视图规范。

修复后的views.py:

# views.py
def new_cardio_testing(request, id_patient, protocol):  # 增加request参数
    pass

完成以上三处修复后,测试即可正常运行,传递多个参数时不会再报错。

内容的提问来源于stack exchange,提问作者Lucas VB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:09:26