tim*_*tim 24 python django rest django-rest-framework
我有一些问题.我在Django Rest Framework中使用路由器,我想测试一些api方法.
在urls.py中:
router = DefaultRouter()
router.register(r'my-list', MyViewSet, base_name="my_list")
urlpatterns = [
url(r'^api/', include(router.urls,
namespace='api'), ),
]
Run Code Online (Sandbox Code Playgroud)
所以,在tests.py中我想使用像reverse这样的东西.现在我用
response = self.client.get('/api/my-list/')
Run Code Online (Sandbox Code Playgroud)
它是一个硬编码字符串,如果我使用:
response = self.client.get(reverse('api:my_list')
Run Code Online (Sandbox Code Playgroud)
我有一个错误:
django.core.urlresolvers.NoReverseMatch: Reverse for 'my_list' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Run Code Online (Sandbox Code Playgroud)
如何解决?
谢谢!
mik*_*725 46
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>/
Run Code Online (Sandbox Code Playgroud)
这就是为什么它也可能更好地使用资源名称作为路由器base_name.例如base_name='user'VS base_name='users_list'.
| 归档时间: |
|
| 查看次数: |
7443 次 |
| 最近记录: |