#python #django #django-rest-framework
#python #django #django-rest-framework
Вопрос:
Я использую ModelViewSet и пытаюсь настроить стандарт рендеринга. В документации не показано, как использовать ModelViewSet с средствами визуализации drf. Я хочу, чтобы вывод был такого формата:
Format : {'message': <custom message>, 'data': <output from ModelViewSet>}
Код:
class PostViewSet(viewsets.ModelViewSet):
serializer_class = PostSerializer
queryset = Post.objects.all()
permission_classes = [permissions.IsAuthenticated]
renderer_classes = [GenericAPIRenderer]
# How to Override?
class GenericAPIRenderer(renderers.JSONRenderer):
charset = 'utf-8'
def render(self, data, media_type=None, renderer_context=None):
pass
Ответ №1:
Что-то вроде этого работает без каких-либо проблем,
class GenericAPIRenderer(renderers.JSONRenderer):
charset = 'utf-8'
def render(self, data, accepted_media_type=None, renderer_context=None):
updated_data = {'message': "some custom message", 'data': data}
return super().render(updated_data, accepted_media_type, renderer_context)
Комментарии:
1. Как мне передать пользовательское сообщение со уровня представления?
2. если вы хотите ввести «пользовательское сообщение * из представления, тогда лучше переопределить соответствующие методы
3. @AshfaqUrRahmanN
renderer_context
кажется подходящим местом для передачи дополнительной информации или добавления собственного параметра4. @ArakkalAbu Согласно документам для
renderer_context
: «По умолчанию это будет включать следующие ключи: просмотр, запрос, ответ, аргументы, kwargs.». Похоже, он должен содержать необходимые данные. django-rest-framework.org/api-guide/renderers /…5. Я не знал об этом, спасибо за информацию @IainShelvington