如何从非英语值创建 slug?

How to create a slug from non-English values?

我有模型 Author,字段为 firstname,lastname。我想添加另一个字段 'slug' 它将包含一串字段的串联。但是,这些字段包含非英语字符,我需要一个英语 slug 来创建 link 模板 "localhost/authors/str::slug" 我该如何实施?

您可以先使用 trans 将名称转换为拉丁字符。

pip install trans

from trans import trans
from django.utils.text import slugify

author_slug = slugify( trans(first_name + " " + last_name) )

或者,如果您不介意以下字符:%20, %C3,您可以使用

from urllib.parse import quote
author_slug = slugify( quote(first_name + " " + last_name) )

要解决此问题,您可以使用 unidecodeslugify
你应该通过 pip install unidecode

安装它
from unidecode import unidecode
from django.template import defaultfilters
slug = defaultfilters.slugify(unidecode(input_text))

示例:

import unidecode
a = unidecode.unidecode('привет')
the answer will be ('privet') #this is just an example in russian.
and after that you can apply slugify