perminovma
@perminovma

Как работает роутинг в Django-Rest-Framework?

Не могу разбираться с Django-rest-framework роутингом.

Создал сериалайзер:
class AuctionOrderSerializer(serializers.ModelSerializer):
    class Meta:
        model = AuctionOrder


Потом вью:
class AuctionOrderView(generics.ListAPIView):
    # queryset = AuctionOrder.objects.all()
    serializer_class = AuctionOrderSerializer

    def get_queryset(self):
        return AuctionOrder.objects.all()


после чего создал роутер к этой вьюхе:
router = DefaultRouter()
router.register(r'orders', rest_views.AuctionOrderView.as_view, base_name='orders')


Подключил его из url файла приложения:
url(r'rest_api/', include(router.urls)),

Но к сожалению, при попытке перехода по url'ам:
127.0.0.1:8000/eworld/rest_api/orders-list
127.0.0.1:8000/eworld/rest_api/order-list
127.0.0.1:8000/eworld/rest_api/orders
127.0.0.1:8000/eworld/rest_api/order
и тп

получаю страницу с 404 ошибкой:
Page not found (404)
Request Method: GET
Request URL: 127.0.0.1:8000/eworld/rest_api/orders-list
Using the URLconf defined in ew.urls, Django tried these URL patterns, in this order:
^$ [name='index']
^eworld/ dashboard [name='dashboard']
^eworld/ auctions_list [name='auctions_list']
^eworld/ rest_api/ ^$ [name='api-root']
^eworld/ rest_api/ ^\.(?P[a-z0-9]+)$ [name='api-root']
^admin/
^profile/
^angular_urls_config$ [name='angular_urls_config']
^media\/(?P.*)$
^static\/(?P.*)$
The current URL, eworld/rest_api/orders-list, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.


При этом, если перейти просто по 127.0.0.1:8000/eworld/rest_api
То открывается rest'овская страница.

Ребят, кто поопытней, подскажите пожалуйста, что я делаю не так?

Кстати, сначала сделал по urlpatterns как в туториале, все получилось, как начал переделывать на роутер, то не получилось...(
  • Вопрос задан
  • 4303 просмотра
Решения вопроса 1
un1t
@un1t
as_view не нужен
router.register(r'orders', rest_views.AuctionOrderView, 'orders')

www.django-rest-framework.org/tutorial/6-viewsets-...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы