在 Django 管理中编码

Encoding in Django admin

在我的模型中,我有一个定义如下的字段:

姓名=models.CharField(max_length=50)

然后在管理面板中,如果我尝试插入名称中包含“č”、“š”、“ž”等字符的记录,我会收到 UnicodeEncodeError。

'ascii' codec can't encode character u'\u017e' in position 3: ordinal not in range(128)

这是什么?为什么 django 不对所有内容都使用 utf-8?

Django 对所有内容都使用 utf-8。我想错误可能出在您模型的 __unicode__() 方法中。

您应该始终对所有文本数据使用 u' 前缀。所以如果你这样写:

def __unicode__(self):
    return 'Model: %s' % self.name

那你需要改成:

def __unicode__(self):
    return u'Model: %s' % self.name