Не получает url из реверса с помощью DRF DefaultRouter

Я пытаюсь получить урлы для написания тестов с помощью обратной функции. Но я получаю ошибку

Ошибки :-. Реверс для 'notes' не найден. 'notes' не является допустимой функцией представления или именем шаблона.

файлurls.py

from django.contrib import admin
from django.urls import path, include
from core import views
from rest_framework.routers import DefaultRouter

router = DefaultRouter()

router.register("notes",views.NoteModelViewSet)

urlpatterns = [
    path("",include(router.urls)),
]

и файл test.py

def test_get_all_notes_path(self):
        url = reverse('notes')
        response = self.client.get(url)
        self.assertEqual(response.status_code, 200)

Я получаю ошибку для строки url = reverse('notes'), которую я указал выше. Моя модель и маршруты работают нормально. Только я не получаю url в обратной функции.

независимо от того, задали ли вы basename или нет, вы можете сделать обратное с помощью url-path-or-basename-list

url = reverse('notes-list')

установите basename для вашего маршрутизатора в качестве опции

router.register("notes",views.NoteModelViewSet, basename='notes')

поскольку basename будет создавать маршруты с именем по умолчанию

The example above would generate the following URL patterns:

URL pattern: ^notes/$ Name: 'notes-list'
URL pattern: ^notes/{pk}/$ Name: 'notes-detail'

Просто добавлю к ответу, что утилита, которую я нашел очень полезной при работе с reverse() - особенно при использовании вложенных маршрутизаторов сторонних производителей - это drf-extensions.

После установки я использую их команду show_urls следующим образом python manage.py show_urls, в которой перечислены все урлы проекта с соответствующими им именами и параметрами.

Это помогло мне использовать reverse() в самых сложных вложенных ситуациях.

Вернуться на верх