Django REST Framework - пусть ListAPIView ведет себя подобно чистому ListView - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь убедить ListAPIView вести себя так же, как ListView из чистого Django (это означает, что шаблон визуализируется с переменной object_list, возможно, с некоторыми нумерациями страниц и т. Д.).Вот что я попробовал:

class UserListView(ListAPIView):
    permission_classes = (AllowAny, )
    queryset = User.objects.all()
    serializer_class = UserListSerializer
    renderer_classes = (TemplateHTMLRenderer, )
    template_name = 'user/list.html'

Предположим, что User является встроенной моделью пользователя Django, UserListSerializer - ModelSerializer с fields = "__all__" и шаблоном, содержащим только цикл forobject_list отображение всех пользователей.

Когда я пробую это, я получаю следующую ошибку:

TypeError: context must be a dict rather than ReturnList.

Я, должно быть, делаю что-то ужасно неправильное, я полагаюу меня должен быть способ использовать универсальность, и я просто не знаю, как.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Хорошо, я только что попал в ловушку.Все работает как положено, если я включаю нумерацию страниц, например, добавив это в мои настройки:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 100
}

Я бы никогда не подумал, что это будет проблемой.

0 голосов
/ 23 февраля 2019

Сериализатору требуется контекст в формате dict, но вы предоставляете ReturnList, сгенерированный renderer_classes.

Я не получил, если вам нужно ListView, тогда почему вы используете ListAPIView?вы явно визуализируете шаблон вместо JSON.Поэтому, пожалуйста, укажите конкретную причину, по которой вам нужно это сделать, чтобы каждый мог понять, чего вы пытаетесь достичь.

...