Question

Je suis assez nouveau pour Django.

Je veux le nom de mes modèles à afficher en chinois, donc je l'ai utilisé verbose_name dans ma classe méta de mon modèle, les codes ci-dessous:

#this models.py file is encoded in unicode

class TS_zone(models.Model):
    index = models.IntegerField()
    zone_name = models.CharField(max_length=50);
    zone_icon = models.ImageField(upload_to='zone_icon', null=True)
    is_active = models.NullBooleanField(blank=True, null=True)
    status = models.CharField(max_length=7,choices=SETTING_STATUS_CHOICES)
    class Meta:
        ordering = ('index',)
        verbose_name = u'你好嗎?'
        verbose_name_plural = u'你們都好嗎?'

    def __unicode__(self):
        return self.zone_name

Cependant quand je lance syncdb manage.py, les erreurs suivantes Lancers:

File "E:\pythonroot\myproject\..\myproject\myapp\models.py", line 19
SyntaxError: Non-ASCII character '\xe4' in file
E:\pythonroot\myproject\..\myproject\myapp\models.py on line 19, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Il semble que manage.py ne peut pas traiter le caractère non-ascii dans mon verbose_name. Tout ce que je l'ai fait mal?

Merci.

Était-ce utile?

La solution

Vous devez spécifier un encodage. Ajoutez la ligne suivante comme première ligne de votre fichier models.py.

# encoding: utf-8

Mise à jour

Le OP a modifié sa question de dire que le « models.py est codé en Unicode ». Ensuite, l'erreur est étrange. Il fonctionne pour moi en utilisant Django 1.2.1, Python 2.6.2 sur Ubuntu Jaunty.

Mise à jour 2

Pouvez-vous envoyer la chaîne d'encodage que vous avez utilisé pour votre models.py?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top