Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django Rest框架中测试时获取路由器url名称_Python_Django_Rest_Django Rest Framework - Fatal编程技术网

Python 在Django Rest框架中测试时获取路由器url名称

Python 在Django Rest框架中测试时获取路由器url名称,python,django,rest,django-rest-framework,Python,Django,Rest,Django Rest Framework,我有一些问题。我在Django Rest框架中使用路由器,我想测试一些api方法 在url.py中: router = DefaultRouter() router.register(r'my-list', MyViewSet, base_name="my_list") urlpatterns = [ url(r'^api/', include(router.urls, namespace='api'), ), ] 因此,在tes

我有一些问题。我在Django Rest框架中使用路由器,我想测试一些api方法

url.py中

router = DefaultRouter()
router.register(r'my-list', MyViewSet, base_name="my_list")

urlpatterns = [
    url(r'^api/', include(router.urls,
                          namespace='api'), ),

]
因此,在tests.py中,我想使用类似reverse的东西。现在我用

response = self.client.get('/api/my-list/')
这是一个硬编码字符串,如果我使用:

response = self.client.get(reverse('api:my_list')
我有一个错误:

django.core.urlresolvers.NoReverseMatch: Reverse for 'my_list' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
如何解决这个问题


谢谢

DRF在视图集中为不同的URL添加后缀-列表、详细信息和可能的自定义URL。你可以在许多方面看到这一点。因此,在您的情况下,实际的相反情况应该是:

reverse('api:my_list-list')    # for list URL. e.g. /api/my-list/
reverse('api:my_list-detail')  # for detail URL. e.g. /api/my-list/<pk>/
列表URL的
reverse('api:my_list-list')#。e、 g./api/我的清单/
反向('api:my_list-detail')#表示详细URL。e、 g./api/我的清单//

这就是为什么使用资源名作为路由器可能更好的原因
base\u name
。例如,
base\u name='user'
vs
base\u name='users\u list'

base\u name
basename
替换三个小时以找到答案。我只是意识到这是因为我在查看drf文档,他们使用的是相同的方法。我很感激你的回答。