在 slug 中编写波斯语并在 django 的地址栏中使用它

ami*_*ari 3 python django persian

我使用 django,在我的模型中,我想在 slugfield 中编写波斯语(通过使用 utf-8 或其他东西)并使用页面地址中的 slug 我为模型编写此类:

class Category(models.Model):
    name = models.CharField(max_length=20, unique=True)
    slug = models.SlugField(max_length=20, unique=True)
    description = models.CharField(max_length=500)
    is_active = models.BooleanField(default=False)
    meta_description = models.TextField(max_length=160, null=True, blank=True)
    meta_keywords = models.TextField(max_length=255, null=True, blank=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL)

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

    def __str__(self):
        return self.name

    def category_posts(self):
        return Post.objects.filter(category=self).count()
Run Code Online (Sandbox Code Playgroud)

但是保存后 slug 列中没有任何内容,我不知道在 url 中写什么来显示波斯语。你能告诉我我该怎么做吗?

我使用 django 1.9 和 python 3.6。

sna*_*erb 8

文档字符串slugify函数为:

如果 'allow_unicode' 为 False,则转换为 ASCII。将空格转换为连字符。删除不是字母数字、下划线或连字符的字符。转换为小写。还要去除前导和尾随空格。

因此,您需要将allow_unicode标志设置为True以保留波斯文本。

>>> text = '???? ?????! ????? ????!'
>>> slugify(text)
''
>>> slugify(text, allow_unicode=True)
'????-?????-?????-????'
>>> 
Run Code Online (Sandbox Code Playgroud)