I am trying to get the urls for writing the tests using the reverse function. But I'm getting the error
Errors :- Reverse for 'notes' not found. 'notes' is not a valid view function or pattern name.
urls.py file
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)),
]
and test.py file
def test_get_all_notes_path(self):
url = reverse('notes')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
I'm getting error for line url = reverse('notes')
that I have mentioned above. My Model and routes everything working fine. Only I'm not get the url in reverse funtion.
CodePudding user response:
whether you set basename or not you can do reverse with url-path-or-basename
-list
url = reverse('notes-list')
set the basename for your router as an option
router.register("notes",views.NoteModelViewSet, basename='notes')
because basename will create routes with the default name
The example above would generate the following URL patterns:
URL pattern: ^notes/$ Name: 'notes-list'
URL pattern: ^notes/{pk}/$ Name: 'notes-detail'