何か問題があります。 Django Rest Frameworkでルーターを使用しており、いくつかのAPIメソッドをテストしたいと思っています。
rls.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)のビューセットにサフィックスを追加します。 ソースコード と docs で確認できます。したがって、あなたの場合、実際の逆は次のようになります:
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>/
そのため、おそらくリソース名をルーターとして使用する方がよいでしょうbase_name
。例えば base_name='user'
対base_name='users_list'
。