![]() |
1
90
有一个叫做python的包 unidecode 我在Askbot Q&A论坛上采用了这种方法,它对拉丁字母的效果很好,甚至对希腊字母也很合理:
它对亚洲语言有点奇怪:
这有道理吗? 在askbot中,我们这样计算slug:
|
![]() |
2
23
Mozilla网站团队一直致力于实现: https://github.com/mozilla/unicode-slugify 样本代码 http://davedash.com/2011/03/24/how-we-slug-at-mozilla/ |
![]() |
3
15
另外,slugify的django版本没有使用re.unicode标志,因此它甚至不会试图理解
这个自定义版本对我来说很好:
注意最后一个regex替换。这是解决具有更健壮表达式的问题的方法。
我不确定上面的问题是什么,但我猜想它是由 whatever is classified as alphanumeric in the Unicode character properties database 以及如何实现。我听说python 3.x在更好的unicode处理上具有很高的优先级,所以这可能已经被修复了。或者,也许这是正确的python行为,我误用了unicode和/或中文。 目前,解决方法是避免字符类,并基于显式定义的字符集进行替换。 |
![]() |
4
10
恐怕Django对slug的定义意味着ASCII,尽管Django文档没有明确说明这一点。这是slugify的默认过滤器的来源…您可以看到值正在转换为ASCII,如果出现错误,则使用“忽略”选项:
基于此,我想cnprog.com没有使用官方网站
尽管如此,URL的RFC确实声明了非US ASCII字符(或者更具体地说,除了字母数字和$-.+!*'())应使用%hex表示法进行编码。如果您查看浏览器发送的实际原始GET请求(例如,使用Firebug),您将看到中文字符实际上是在发送前编码的…浏览器只是让它在显示屏上看起来很漂亮。我怀疑这就是为什么Slugify坚持只使用ASCII,fwiw。 |
![]() |
5
10
用
Django>=1.9
,
如果使用django<=1.8(自2018年4月起不应使用),则可以 pick up the code from Django 1.9 . |
![]() |
6
7
|
![]() |
7
4
这是我使用的: http://trac.django-fr.org/browser/site/trunk/djangofr/links/slughifi.py slughifi是一个普通slugify的包装器,它的不同之处在于它用英语字母表中的对应字符替换了国家字符。 因此,你得到的不是“_”或“A”,而不是“_”或“L”,依此类推。 |
![]() |
8
0
我感兴趣的是在slug中只允许使用ASCII字符。这就是为什么我尝试将一些可用的工具作为同一字符串的基准:
|
![]() |
J. Hesters · 在url中使用多个段塞 7 年前 |
![]() |
TJB · 无法在Django Admin中编辑slug字段 7 年前 |
![]() |
ottomd · Django如何使用URL中的slug作为变量 7 年前 |
![]() |
niyasc · 用数据库条目映射slug 9 年前 |
![]() |
Sunil Lulla · 何时使用slug字段和查询字符串 9 年前 |
|
bStaq · 创建唯一的页面标题slugs-php 11 年前 |