По второй ссылке на stackoverflow тоже нет решения. Там объясняется, что такое render() и чем render() отличается от аналогов в django 1.x.
Что такое render(), redirect() итп я знаю. Передать переменную в темплейт или сделать переадресацию я умею. Сконверитровать коды с процентами в тестовой консоли (не внутри django) я тоже умею. Но во view.py, в первой строчке кода я получаю значение GET-параметра, и там уже только '����' - это все одинаковые ромбики, с ними ничего сделать нельзя. Нужно как-то получить не ромбики на входе, чтобы можно было дальше что-то делать. Чтобы не повторяться, третий раз я полностью описывать проблему.
Это другой вопрос. У человека в URL Unicode "%C3%A9", которое в django попадают в виде "u'\xc3\xa9'. При необходимости если в таком виде символы пришли во view, их там можно перекодировать. Но даже при этом по указанной ссылке нет нормального решения. Человек сам спросил и сам ответил, что, ничего не меняя в коде, при использовании древней версии django 1.4 у него нет проблем, а при использовании альфа-версии 1,5a1 проблемы есть. Предлагает использовать версию 1.4. Я использую django 4.1...
У меня, если в URL стоят закодированные символы Unicode, в отличие от темы на stackoverflow, в django попадают нормальные раскодированные символы на кириллице и все работает без проблем. У меня это штатный вариант. Проблема проявляется в случаях когда пользователь сначала штатно работает, находит в поиске интересующие его результаты, копирует из браузера ссылку и вставляет ее на какой-нибудь форум. А с форума ссылка в каких-то случаях уже не открывается. Точнее ссылка открывается, но в форме в поисковом поле стоят '����' и поиск выдает нулевой результат. Внутри django никаких ошибок не возникает.
Я сам воспроизвести "неправильное копирование" ссылки из браузера не могу. У меня из всех браузеров ссылки копируются правильные. При размещении их где-либо они нормально открываются. Но, вероятно, есть какие-то диковинные браузеры, которые как-то по особенному копируют ссылки из адресной строки.
А распознать "неправильную" ссылку я могу с первого взгляда. Если в url закодированы ANSI символы, то одному символу на кириллице соответствует короткая комбинация типа "%F3", а если та же буква в unicode, то ей соответствует комбинация в два раза длиннее "%D1%83". Вот есть таблица соответствия кодов для в двух кодировках https://snipp.ru/handbk/url-code Сама переконвертация с помощью urllib несложная. Но во view уже приходят вместо кодов одинаковые символы с вопросами в ромбиках, да и хотелось бы найти красивое решение, если оно есть.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Что такое render(), redirect() итп я знаю. Передать переменную в темплейт или сделать переадресацию я умею. Сконверитровать коды с процентами в тестовой консоли (не внутри django) я тоже умею. Но во view.py, в первой строчке кода я получаю значение GET-параметра, и там уже только '����' - это все одинаковые ромбики, с ними ничего сделать нельзя. Нужно как-то получить не ромбики на входе, чтобы можно было дальше что-то делать. Чтобы не повторяться, третий раз я полностью описывать проблему.