Domanda

Sono abbastanza nuovo a Django.

Voglio il nome dei miei modelli da visualizzare in cinese, quindi ho usato nel mio verbose_name Metaclasse del mio modello, i codici di seguito:

#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

Tuttavia quando ho eseguito syncdb manage.py, i seguenti errori getta:

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

Sembra che manage.py non può elaborare caratteri non-ascii nel mio verbose_name. Tutto ciò che ho torto?

Grazie.

È stato utile?

Soluzione

È necessario specificare una codifica. Aggiungere la seguente riga come la prima riga del file models.py.

# encoding: utf-8

Aggiorna

Il PO ha modificato la sua domanda per dire che il "models.py è codificato in Unicode". Quindi l'errore è strano. Funziona per me usando Django 1.2.1, Python 2.6.2 su Ubuntu Jaunty.

Aggiorna 2

Puoi pubblicare la stringa di codifica avete utilizzato per la vostra models.py?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top