2016-04-25 2 views
3

я пытался вернуть некоторые URL, используя обратную функцию(), но независимо от того, что я получаю NoReverseMatch исключение:Django REST Framework - NoReverseMatch при использовании реверса()

Reverse for 'folder' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

Ради Устранение неполадок, я создал некоторый dumbed-down код, но он STILL не будет работать. Вот мое мнение:

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)}) 

Вот мой URL схеме:

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')]) 
+0

Вы пытались использовать 'django.core.urlresolvers.reverse'? – Gocht

+0

@Gocht Да, но он производит ту же ошибку. Я также попробовал reverse_lazy(), но там не повезло. – Steohawk

+0

Просто чтобы проверить, что шаблоны url находятся внутри вашего музыкального модуля? Если это так, URL-адрес музыкального модуля «включен» в основной проект «urls.py»? Я был укушен этим пару раз в прошлом ... – Paul

ответ

3

Вы не должны передать запрос:

{'url': reverse('folder')} 

или

{'url': reverse('appname:folder')} 

если вы используете namespaced URLs

+0

Спасибо! Добавление пространства имен сработало. Мне все равно пришлось передать запрос, чтобы получить полный URL-адрес, но я думаю, что это что-то особенное для структуры REST. – Steohawk

Смежные вопросы