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

如何在Django测试中发送查询参数获取指定类型广告?

解决测试中传递查询参数的问题

首先明确:reverse() 只负责生成URL的路径部分,查询参数(即?后面的内容)不属于路由配置范畴,因此不能通过reverse()传递。你需要在self.client.get()方法里单独传入查询参数。

正确写法是把查询参数放在get()方法的data参数中:

response = self.client.get(reverse("ads"), data={"type": "normal"})

也可以直接用关键字参数传递,写法更简洁:

response = self.client.get(reverse("ads"), type="normal")

这两种写法都会自动生成带?type=normal的请求URL,和手动访问http://127.0.0.1:8000/ads/?type=normal的效果完全一致。

你之前尝试的reverse()写法之所以无效,是因为reverse()仅接受路由定义中的路径参数(比如URLconf里的<int:pk>这类),不处理查询参数。

测试验证示例:

# 验证返回普通广告
response = self.client.get(reverse("ads"), type="normal")
self.assertContains(response, "普通广告标识内容")

# 验证返回高级广告
response = self.client.get(reverse("ads"), type="premium")
self.assertContains(response, "高级广告标识内容")

内容的提问来源于stack exchange,提问作者Anicka dlc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:15:38