2017-12-22 2 views
0

Ich benutze Django und in meinen Modellen möchte ich Persisch in Slugfield schreiben (mit utf-8 oder etwas anderes) und verwenden Sie die Slug in Adresse der Seite Ich schreibe diese Klasse für Modell:Schreiben Sie Persisch in Slug und verwenden Sie es in der Adressleiste in Django

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() 

Aber es gibt nichts in slug Spalte nach dem speichern und ich weiß nicht, was in uRL zu schreiben Persisch zu zeigen. Kannst du mir sagen, was ich tun soll?

Ich benutze Django 1.9 und Python 3.6.

Antwort

0

Die docstring für die slugify Funktion ist:

Umwandlung in ASCII, wenn 'allow_unicode' False ist. Konvertiere Leerzeichen in Bindestriche. Entfernen Sie Zeichen, die keine alphanumerischen Zeichen, Unterstriche oder Bindestriche sind. In Kleinbuchstaben konvertieren. Streichen Sie auch führende und nachfolgende Leerzeichen.

Sie müssen also das allow_unicode Flag auf True setzen, um den persischen Text zu erhalten.

>>> text = 'سلام عزیزم! عزیزم سلام!' 
>>> slugify(text) 
'' 
>>> slugify(text, allow_unicode=True) 
'سلام-عزیزم-عزیزم-سلام' 
>>> 
Verwandte Themen