1

我对 Django 很陌生。

我希望我的模型名称以中文显示,所以我在模型的元类中使用了verbose_name,代码如下:

#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

但是,当我运行 manage.py syncdb 时,会引发以下错误:

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

似乎 manage.py 无法处理我的 verbose_name 中的非 ascii 字符。我做错了什么吗?

谢谢你。

4

1 回答 1

5

您必须指定编码。将以下行添加为文件的第一行models.py

# encoding: utf-8

更新

OP 编辑​​了他的问题,说“models.py以 Unicode 编码”。然后错误很奇怪。它适用于我在 Ubuntu Jaunty 上使用 Django 1.2.1、Python 2.6.2。

更新 2

你能发布你用于你的编码字符串models.py吗?

于 2010-09-07T06:04:38.993 回答