我使用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()
但是在保存之后没有什么在slug列中,我不知道在url中写什么来显示波斯语。你能告诉我该怎么办?
我使用django 1.9和python 3.6。
docstring函数的slugify
是:
如果'allow_unicode'为False,则转换为ASCII。将空格转换为连字符。删除不是字母数字,下划线或连字符的字符。转换为小写。同时剥去前导和尾随空格。
因此,您需要将allow_unicode
标志设置为True
以保留波斯文本。
>>> text = 'سلام عزیزم! عزیزم سلام!'
>>> slugify(text)
''
>>> slugify(text, allow_unicode=True)
'سلام-عزیزم-عزیزم-سلام'
>>>