Creating my first test case, failing.

67 views
Skip to first unread message

Filbert

unread,
Mar 26, 2024, 6:55:17 AM3/26/24
to Django users
Consider this what seems to be a simple Django/DRF API which works:

class CourseViewSet(viewsets.ModelViewSet):
  queryset = Course.objects.all()
  serializer_class = CourseSerializer

router = DefaultRouter()
router.register(r'courses', CourseViewSet)

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

POST to: http://localhost:9000/courses/ works from cURL

But this code:
class CourseAPITest(TestCase):
  def setUp(self):
    self.client = APIClient()
    self.course_data = {'description': 'course number 1', 'name': 'intro to something'}
    self.response = self.client.post(reverse('courses'),          self.course_data, format='json')

Gives me the error:

django.urls.exceptions.NoReverseMatch: Reverse for 'courses' not found. 'courses' is not a valid view function or pattern name.

Muhammad Juwaini Abdul Rahman

unread,
Mar 26, 2024, 7:28:45 AM3/26/24
to django...@googlegroups.com
It's not reverse('courses') alone. Probably reverse('courses-create') or something like that.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/21615aab-a01a-4a1c-bc79-ed88908cafbbn%40googlegroups.com.

Filbert

unread,
Mar 26, 2024, 7:33:07 AM3/26/24
to Django users
*sigh* same error:
django.urls.exceptions.NoReverseMatch: Reverse for 'courses-create' not found. 'courses-create' is not a valid view function or pattern name.

Gajanan Kathar

unread,
Mar 26, 2024, 2:41:58 PM3/26/24
to django...@googlegroups.com
Use "basename" parameter while registering router. 

router.register(r'courses', CourseViewSet, basename="courses")

And then reverse using this basename and operation like "courses-list".

Bayodele Oguntomiloye

unread,
Mar 26, 2024, 4:33:56 PM3/26/24
to django...@googlegroups.com
Check your url. This error usually show up when  there's no url with the name provided for the reverse function 

--

Muhammad Juwaini Abdul Rahman

unread,
Mar 27, 2024, 7:56:15 PM3/27/24
to Django users
Obviously. You need to know how your routers generate the URL endpoint.

After reading DRF, my best guess would be either 'courses-list' or 'course-list'.

Reply all
Reply to author
Forward
0 new messages