如何从非英语值创建一个 slug?
Posted
技术标签:
【中文标题】如何从非英语值创建一个 slug?【英文标题】:How to create a slug from non-English values? 【发布时间】:2021-12-14 07:09:00 【问题描述】:我的模型 Author 带有字段 firstname, lastname。我想添加另一个字段 'slug' 这将包含一个字段串联的块。但是,这些字段包含非英文字符,我需要一个英文 slug 来创建链接模板 "localhost/authors/str::slug" 如何实现?
【问题讨论】:
【参考方案1】:要解决此问题,您可以使用unidecode
和slugify
。
你应该通过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
【讨论】:
它可以使用空格吗?比如“John Streleki” @lhor 是的,但你必须在使用完unidecode
后申请slugify
是的,但是当我尝试显示 self.slug, slug = defaultfilters.slugify(unidecode(f"firstname lastname")) 时它会返回这个“djangodbmodelsfieldscharfield-djangodbmodelsfieldscharfield”
@lhor 创建一个聊天室,我会帮助你。你没有以正确的方式使用它。
我的声望不够【参考方案2】:
您可以先使用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) )
【讨论】:
据我了解,trans'会将我的字符串 f"firstname lastname" 翻译成英文,然后 slugify 会返回一个 slug? “英文”字符,不是英文以上是关于如何从非英语值创建一个 slug?的主要内容,如果未能解决你的问题,请参考以下文章