Как сделать Django slugify, работают правильно со строками Unicode?

Это то, для чего Альфа / Бета / Закрытые тестовые дорожки .

Обновление: для проблемы, затронутой в этом вопросе, это называется делом «Предприятие». Для этого в Google Play существуют различные варианты , которые описаны здесь .

37
задан Serjik 19 December 2015 в 09:11
поделиться

1 ответ

Я - определение испуганного django ASCII средств краткого заголовка, хотя django документы явно не указывают это. Это - источник defaultfilters для slugify... Вы видите, что значения преобразовываются в ASCII с 'проигнорировать' опцией в случае ошибок:

import unicodedata
value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore')
value = unicode(re.sub('[^\w\s-]', '', value).strip().lower())
return mark_safe(re.sub('[-\s]+', '-', value))

На основе этого я предположил бы, что cnprog.com не использует чиновника slugify функция. Можно хотеть адаптировать django отрывок выше, если Вы хотите другое поведение.

Однако хотя, RFC для URL действительно указывает что non-us-ascii символы (или, более конкретно, что-либо кроме буквенно-цифрового индикатора и $ - _. +! *, '()) должен быть закодирован с помощью %hex нотации. Если Вы смотрите на фактические сырые данные, ПОЛУЧАЮТ запрос, который Ваш браузер отправляет (скажите, с помощью Firebug), Вы будете видеть, что китайские символы на самом деле кодируются прежде чем быть отправленным... браузер просто заставляет его выглядеть симпатичным в дисплее. Я подозреваю, что это - то, почему slugify настаивает на ASCII только, fwiw.

9
ответ дан Jarret Hardie 27 November 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: