LINUX.ORG.RU

Django Замена символов входящих POST

 


0

2

Обнаружил, что некоторые пользователи присылают различные варианты букв ЙйЁё, то-есть, вместо обычной букв ЙйЁё приходит комбинация ИиЕе и символов с кодам 774 и 776 и как следствие некоторые брОвзеры криво отображают эти символы

Соответственно нужно где то делать replace. И вот думаю в какой части стека (nginx/uwsgi/django/postgres) лучше проводить эту замену? Если добавлять мидлварь в Django то там ломается request.POST.getlist добавлять триггеры в постгрессе как то совсем дико получается Может на уровне uwsgi можно добавить какой то прокси?

★★★

Кмк, правильно делать валидацию на уровне API - или на клиенте, или в схеме запроса на бэке и отбивать запросы с «неправильными» символами.

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

эта проблема проявляется при работе с django_admin, встроенное приложение генерирующие и формы и обработчики?

По сути, проблему можно решить добавив в django.core.habdlrers.wsgi соответствующий replace но тогда нужно патчить пакет джанги при каждой сборке образа докер, в общем не совсем кашерно

fMad ★★★
() автор топика

на фронте нельзя просто обрабатывать то, что отправляется на сервер?

anonymous_sapiens ★★★★★
()

Чую XY проблему.
Какую проблему ты собираешься этим решить?

И вот думаю в какой части стека (nginx/uwsgi/django/postgres) лучше проводить эту замену?

Лучше ни в какой части не проводить никаких замен

Goury ★★★★★
()
Ответ на: комментарий от fMad

Так в в чём проблема-то?
То что чей-то браузер отправляет в теле запроса немного другие буквы проблемой само по себе не является.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)
Ответ на: комментарий от Goury

за эти [Ййё] в гельветике в сафари мой дизайнеры/архитеркторы генерируют кирипичам, а не тем, что нужно

fMad ★★★
() автор топика

Конечная цель сего мероприятия какая?

Проблемы с поиском из-за смеси «й» и «и + кратка»? Если проблема только с отображением, тут проще будет CSS подкрутить в плане шрифтов. Твой уникальный ответ у меня отображается нормально, например, а в AkelPad кратка съезжает.

Radjah ★★★★★
()
Ответ на: комментарий от fMad

Попробуй пропатчить функцию которая буквы запроса ищет в базе.

По правилам русского языка во многих ситуациях буквы е и ё вообще равнозначны в плане парсинга.
И если твой поиск не может найти слово «ёжик» по запросу «ежик» — это тоже косяк.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)
Ответ на: комментарий от fMad

Проблему надо решать там где она проблема, а не там где она не является проблемой.
Тело запроса проблемой не является, проблема в том что твой поиск не проводит соответствие символов и их комбинаций в полной мере.
Вот это и решай.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)

Должна помочь нормализация юникода, unicodedata.normalize. Самое логичное место, кмк - это формы/сериализаторы.

provaton ★★★★★
()

Укажи в html конкретную кодировку

<meta charset="кодировка">

Может помочь еще указание конкретных используемых шрифтов.

А вообще, замену символов лучше всего делать после этапа валидации. Я бы сделал в методе clean() формы.

dicos ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.