我正在搜索多种语言的网站。它工作正常,但谈到俄罗斯,我遇到了问题。 Django不处理俄语字符。在模板中我有
<input type="text" name="q">
当我输入俄语文本时,例如ванна,在我request.POST['q']
的视图功能中,我正确地说出了这个词。然后我需要敲击它,但它只是给我空字符串。我也尝试了这个answer,但是当我需要它是相同的俄语字符串时,我得到结果 vanna 。也许有一些方法可以将其转换回来?还是其他任何解决方案?
答案 0 :(得分:3)
如果allow_unicode为False,则转换为ASCII(默认值)。将空格转换为连字符。删除不是字母数字,下划线或连字符的字符。转换为小写。还剥离前导和尾随空格。
这应该有效:
slugify("ванна", allow_unicode=True)
这仅适用于Django 1.9。
但是,基于Django 1.9 source code,您可以创建自己的utils函数:
from __future__ import unicode_literals
import re
import unicodedata
from django.utils import six
from django.utils.encoding import force_text
from django.utils.functional import allow_lazy
from django.utils.safestring import SafeText, mark_safe
def slugify_unicode(value):
value = force_text(value)
value = unicodedata.normalize('NFKC', value)
value = re.sub('[^\w\s-]', '', value, flags=re.U).strip().lower()
return mark_safe(re.sub('[-\s]+', '-', value, flags=re.U))
slugify_unicode = allow_lazy(slugify_unicode, six.text_type, SafeText)