Как в django-rest-framework переопределить Content-Type ответа?
Есть очевидный способ понаследоваться от JSONRenderer, и прописать его в настройки. Но может есть какая-то настройка для этого?
P.S. переопределить indent так же не помешало бы.
Как это не надо, у них в ответе не указывается кодировка и все отображается краказаблами. Парвильный заголовок должен быть такой "Content-type: application/json; charset=utf-8". А второе тоже надо, для отладки удобно.
А вот так не надо. Правильный, каноничный json, записывается исключительно в ASCII. Откуда там кракозябры возьмутся-то? А отладку более чем удобно проводить на включенном по умолчанию HTML-рендерере, там всё отформатируется красиво.
Если предлагаемые встроенные решения ну никак не подходят, то settings.REST_FRAMEWORK в зубы, переопределяем дефолтные рендереры-сериалайзеры-права-и-всё-такое и получаем то, что хотим.
marazmiki: про правильный json в курсе, но мне достаточно текста, а в ascii строки получаются вида '\u043f\u0440\u0438\u0432\u0435\u0442 \u043c\u0438\u0440' это крайне не удобно. С переопределением вопросов нет.
marazmiki: прикол в том что в настроках есть UNICODE_JSON который позволяет отдавать json в utf-8, однако при это не указывается кодировка в http заголовке и это уже точно не правильно. А то что indent не нужно указывать, то это вообще не ясно по каким соображением.
un1t: да нет, как раз понятно, по каким. Вы, небось, и компрессорами для js/css не пользуетесь, а подключаемые ресурсы заботливо раскладываете по папочкам, потому что так отлаживать удобнее?
un1t: конечно, отличаются. Но DRF предоставляет стандартизованные (это к вопросу об ASCII в ответе) и готовые (а это — к HTML-рендереру) средства для отладки REST API. Если прям очень хочется нарушить все мыслимые стандарты, то пожалуйста: гибкость и джанги, и DRF это позволяет. Но такие поступки остаются целиком на совести разработчика. И облегчать ему задачу в этих целях как-то неправильно
marazmiki: объясни тогда про настройку UNICODE_JSON. Если быть послледовательным, то этой настройки либо не должно быть, либо если она есть, то должна еще и заголовок правильный отдавать.