Django中如何对带参数的URL使用reverse反向解析
Django调用reverse生成带路径参数的URL时报NoReverseMatch错误解决方案
你的URL规则
batch-postpone定义了必填的整数类型路径参数pk,调用reverse方法时没有传入该参数,Django无法拼接出符合规则的完整URL,因此抛出NoReverseMatch异常。
解决方法
调用reverse时传入对应参数即可,支持两种传参方式:
方式1:通过args传入位置参数
按URL中参数定义的顺序,将参数值放在列表中传入:
# 示例:传入pk=1 self.postpone_batch_url = reverse('batch-postpone', args=[1])
方式2:通过kwargs传入关键字参数(推荐)
指定参数名和对应值传入,无需关心参数顺序,可读性更高,不易出错:
# 示例:传入pk=1 self.postpone_batch_url = reverse('batch-postpone', kwargs={'pk': 1})
测试场景常用写法
通常在测试类的setUp方法中先创建测试数据,再调用reverse生成对应URL:
class ABCTestCases(APITestCase, TestCase): def setUp(self): # 先创建测试用的业务对象,假设对应模型名为Batch self.test_batch = Batch.objects.create(/* 填充测试字段 */) # 直接传入测试对象的主键生成URL self.postpone_batch_url = reverse('batch-postpone', kwargs={'pk': self.test_batch.pk})
内容的提问来源于stack exchange,提问作者raj-kapil
相关产品推荐
相关产品推荐

