在路径 Django 的 URL 参数中指定两个参数
Specify two arguments in URL parameters for path Django
我目前有一个接受 GET 请求的端点,用于检索日期范围内的用户(没有真正需要解释 'why')。具体端点如下所示:GET /users/?fromdate={yyyy-mm-dd}&todate={yyyy-mm-dd}
例如,我可以有这样的请求:GET /users/?fromdate=2017-01-01&todate=2017-04-01
在 urls.py
和 views.py
上没有过多的细节,我已经指定了路由器寄存器和路径来接受对这个端点的请求(工作正常):
urls.py:
router = routers.DefaultRouter()
router.register(r"user", views.UserViewSet, basename='user')
urlpatterns = [
path('user/', views.UserViewSet.as_view({'get': 'user'}), name='user')
]
我现在正在尝试 运行 单元测试只是为了向此端点发送请求
我的部分 test_user.py class 看起来像这样:
def test_user_list(self):
response = self.client.get(reverse('user', kwargs={'fromdate': '2017-01-01', 'todate': '2017-04-01'})), format='json')
self.assertEqual(response.status_code, 200)
但是,当我运行进行单元测试时,我得到一个错误:
Reverse for 'user' with keyword arguments '{'fromdate': '2017-01-01',
'todate': '2017-04-01'}' not found. 1 pattern(s) tried: ['/user/$']
我认为错误是由于我的路径(虽然它通过像 Postman 这样的 REST 客户端手动工作)没有指定期望的参数 path('user/', views.UserViewSet.as_view({'get': 'user'}), name='user')
那么如何指定参数来满足上面的 'fromdate' 和 'todate' 呢?我查看了 documentation,但除了诸如 /articles/2005/03/
之类的网址,我找不到任何其他内容。
kwargs,当传递给 reverse() 时,变成 URL args,例如user/arg1/arg2/
如果你想传递 URL 变量,kwargs 应该传递给 .get() 而不是,作为数据:
response = self.client.get(reverse('user'), {'fromdate': '2017-01-01', 'todate': '2017-04-01'})
我目前有一个接受 GET 请求的端点,用于检索日期范围内的用户(没有真正需要解释 'why')。具体端点如下所示:GET /users/?fromdate={yyyy-mm-dd}&todate={yyyy-mm-dd}
例如,我可以有这样的请求:GET /users/?fromdate=2017-01-01&todate=2017-04-01
在 urls.py
和 views.py
上没有过多的细节,我已经指定了路由器寄存器和路径来接受对这个端点的请求(工作正常):
urls.py:
router = routers.DefaultRouter()
router.register(r"user", views.UserViewSet, basename='user')
urlpatterns = [
path('user/', views.UserViewSet.as_view({'get': 'user'}), name='user')
]
我现在正在尝试 运行 单元测试只是为了向此端点发送请求
我的部分 test_user.py class 看起来像这样:
def test_user_list(self):
response = self.client.get(reverse('user', kwargs={'fromdate': '2017-01-01', 'todate': '2017-04-01'})), format='json')
self.assertEqual(response.status_code, 200)
但是,当我运行进行单元测试时,我得到一个错误:
Reverse for 'user' with keyword arguments '{'fromdate': '2017-01-01', 'todate': '2017-04-01'}' not found. 1 pattern(s) tried: ['/user/$']
我认为错误是由于我的路径(虽然它通过像 Postman 这样的 REST 客户端手动工作)没有指定期望的参数 path('user/', views.UserViewSet.as_view({'get': 'user'}), name='user')
那么如何指定参数来满足上面的 'fromdate' 和 'todate' 呢?我查看了 documentation,但除了诸如 /articles/2005/03/
之类的网址,我找不到任何其他内容。
kwargs,当传递给 reverse() 时,变成 URL args,例如user/arg1/arg2/
如果你想传递 URL 变量,kwargs 应该传递给 .get() 而不是,作为数据:
response = self.client.get(reverse('user'), {'fromdate': '2017-01-01', 'todate': '2017-04-01'})