3

我正在尝试使用包含唯一标题的模型构建一个应用程序,一些用户会用阿拉伯语和其他语言编写标题,并且在保存时,我尝试对该字段进行 slugify。如果是阿拉伯语,它将返回空白。有什么方法可以显示阿拉伯语措辞,但保持用破折号替换特殊字符和空格的 slug 原则?

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField()

   def save(self, *args, **kwargs):
     if self.slug is in (None, '', u''):
       self.slug = slugify(self.title)
     super(Article, self).save(*args, **kwargs)
4

5 回答 5

5

要启用 url 编码器,只需打开 settings.py 并在文件末尾插入新行:

ALLOW_UNICODE_SLUGS = 真

于 2014-08-12T21:39:41.533 回答
3
    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
            if not self.slug:
                self.slug = arabic_slugify(self.title)
        super(Note, self).save(*args, **kwargs)

    def __str__(self):
        return self.title


def arabic_slugify(str):
    str = str.replace(" ", "-")
    str = str.replace(",", "-")
    str = str.replace("(", "-")
    str = str.replace(")", "")
    str = str.replace("؟", "")
    return str
于 2018-07-30T20:35:42.613 回答
3

Django 1.9 的新设置allow_unicode是:

slug = SlugField(allow_unicode=True)
于 2016-08-04T18:43:34.380 回答
0

检查这个https://github.com/mozilla/unicode-slugify,我已经将它与 Django 1.4.x/1.5.x 一起使用,我也在寻找阿拉伯语 slug。

于 2013-08-20T02:54:42.113 回答
0

最好 allow_unicode=True对每个SlugField要使其允许 Unicode 的东西使用 attr。这是一个简单的例子:

slug = models.SlugField(max_length=200, allow_unicode=True, unique=True)

对于新版本Djangosettings.py ALLOW_UNICODE_SLUGS = True属性将不起作用。

于 2021-12-27T15:28:45.230 回答