-
Notifications
You must be signed in to change notification settings - Fork 39
Add Orjson render for drf #816
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@kazqvaizer тегаю, т.к. нет прав звать ревьюера @nkiryanov, а можешь подсказать, как ты обновлял uv.lock внутри шаблона? |
так и делаю, предполагая что это не частая операция. |
Да не, в целом не страшно. Просто думал мало ли, может в uv есть какой-нибудь флаг незадокументированный, чтобы игнорить подобные проверки. Будем тогда так пользоваться |
|
Вроде бы штука рабочая, но хочется как-то вписать в текущие рендеры и парсеры более явно, подумать, как все скомпоновать вместе, вот, например, тут есть настройка DEFAULT_RENDERER_CLASSES, есть еще вот этот класс, есть парсеры. У нас сейчас в проекте, например, решили убрать camel case renderer. В этом сетапе легко будет потерять этот orjson оптимизацию, как бы её включить более надежно не через настройку camel_case? |
Можно углубить конечно имеющийся AppJSONRenderer и добавить аналогичный кастомный класс для парсинга. Просто у нас тогда гаранировано эти оба класса будут завязаны на код из двух библиотек. И если захочется отказаться от одной из них, надо будет идти и переписывать сами классы, а не просто свапнуть срочку в конфиге. Так будет, конечно, надежнее. Да и необходимость лезть в эти рендеры/парсеры вообще очень редкая и если вместо свапа строчки в конфиге надо будет лезть в наши кастомные классы и немного тюнить логику, то это не сильно поднимет сложность проекта. Я же правильно тебя понял? Тебе ок вариант с кастомными классами под рендер/парсинг? (судя по исходникам другого варианта особо и нет как бы совместить эти две либы, либо как сейчас, либо писать свой класс и там уже лепить франкенштейна) |
|
Мне ок твой текущий вариант, но если что, можно без переопределения сделать, к примеру, вернуть строку JSON_CAMEL_CASE = {
"RENDERER_CLASS": "drf_orjson_renderer.renderers.ORJSONRenderer",
}И подстраховаться от удаления либы camel case тем, что явно прописать в конфиге дублирующие строчки, как в инструкции написано - https://github.com/brianjbuck/drf_orjson_renderer?tab=readme-ov-file#installation Насколько я понял доку DRF, там выбор нужного рендерера / парсера из конфига идет по типу контента и сверху вниз по списку, так что не потеряется. Будет ли так лучше? |
Я бы так и сделал, если бы можно было по этому же принципу в camelcase парсер подставить orjson. Но там исходники этого не позволяют. Поэтому решил сделать единообразно parser и render. Если тебе такой вариант ок - можешь смерджить? :) |

#815
Simple af ;D
Ну а вообще, по опыту синхро, больше ничего и не надо делать, чтобы сменить рендер класс. Так что вот оно уже рабочее. Локально протестил тоже.