LINUX.ORG.RU

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

 


0

2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

dicos ★★
()