Reputation: 95
I've been trying to return some URLs using the reverse() function, but no matter what, I get a NoReverseMatch exception:
Reverse for 'folder' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
For the sake of troubleshooting, I created some dumbed-down code, but it STILL won't work. Here's my view:
from rest_framework.response import Response
from rest_framework.reverse import reverse
from rest_framework.views import APIView
class Folder(APIView):
def get(self, request, format=None):
return Response({'url': reverse('folder', request=request)})
Here's my URL pattern:
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from music import views
urlpatterns = format_suffix_patterns([
url(r'^folder/$', views.Folder.as_view(), name='folder')])
Upvotes: 6
Views: 3852
Reputation: 11
I had the same issue dealing with reverse() Django-Rest-Framework when trying to get reverse for a model in serializers.py
....
def get_links(self, obj):
request = self.context['request']
return {
'self': reverse('sprint-detail',
kwargs={'pk': obj.pk}, request=request),
}
adding the app to the reverse solved it my_app
....
def get_links(self, obj):
request = self.context['request']
return {
'self': reverse('my_app:sprint-detail',
kwargs={'pk': obj.pk}, request=request),
}
Upvotes: 1
Reputation: 6933
You shouldn't pass the request:
{'url': reverse('folder')}
or
{'url': reverse('appname:folder')}
if you are using namespaced URLs
Upvotes: 7