slugify 函数的奇怪行为

发布于 2024-09-13 01:07:10 字数 459 浏览 3 评论 0原文

它在管理站点上完美运行。但下面的代码在某些语言中无法正常工作(缺少某些字符,例如土耳其语“ı”)。

class Foo(models.Model):
    name = models.CharField(max_length=50, unique=True, db_index=True)
    slug = models.SlugField(max_length=100, unique=True, db_index=True)

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.name)
        super(Foo, self).save(*args, **kwargs)

例如,假设名称是“ışçğö”,然后 slug 变成“scgo”,而它应该是“iscgo”。

It works perfectly from the admin site. But the code below doesn't work properly(some characters are missing, like Turkish "ı") in some languages.

class Foo(models.Model):
    name = models.CharField(max_length=50, unique=True, db_index=True)
    slug = models.SlugField(max_length=100, unique=True, db_index=True)

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.name)
        super(Foo, self).save(*args, **kwargs)

For example, let's assume that the name is "ışçğö" and then slug becomes "scgo" when it should be "iscgo" instead.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

节枝 2024-09-20 01:07:10

这是 SlugField 行为根据定义。 slug 应该是 URL 的一部分。尽管 URL 可能支持非拉丁字符,但这些字符在 slugs 内不受支持。

Slug 是一个报纸术语。蛞蝓是一个
某物的短标签,包含
仅字母、数字、下划线或
连字符。 它们通常用在 URL 中。


您获得的结果与 Django 行为不一致:

>>> from django.template.defaultfilters import slugify
>>> v = u"ışçğö"
>>> slugify(v)
u'isg'

您到底从哪里获得这些结果?

This is SlugField behavior by definition. A slug is supposed to be part of a URL. Even though URLs might support non-latin characters, these are not supported inside slugs.

Slug is a newspaper term. A slug is a
short label for something, containing
only letters, numbers, underscores or
hyphens. They're generally used in URLs.


The results you are getting aren't consistent with Django behavior:

>>> from django.template.defaultfilters import slugify
>>> v = u"ışçğö"
>>> slugify(v)
u'isg'

Where exactly are you getting these results?

七禾 2024-09-20 01:07:10

尝试 slughifi 函数更好的 slug 功能(感谢 Markus 向我展示了这一点)。

Try the slughifi function for better slug functionality (thanks to Markus for showing me this).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文