在编写model时,如下:
- class Book(models.Model):
- title=models.CharField(max_length=100)
- authors=models.ManyToManyField(Author)
- publisher=models.ForeignKey(Publisher)
- publication_date =models.DateField()
- def __str__(self):
- return self.title;
admin界面中加入book 输入中文如图:
导致错误:Caught an exception while rendering: 'ascii' codec can't encode characters in position 4-10: ordinal not in range(128)
其中Title一项如果输入英文就不会出错,原因分析,
- def __str__(self):
- return self.title;
返回值需要编码转换如下:
- 原因分析,def __str__(self):
- return self.title.encode('utf-8');
就可以输入中文。
其实在django中,除了文件(source & templates)的编码要保存为utf-8外,文件本身的类型也要为utf-8,因为django的核心模块就是utf-8