又遇 django 中文编码问题

在编写model时,如下:

  1. class Book(models.Model):
  2.     title=models.CharField(max_length=100)
  3.     authors=models.ManyToManyField(Author)
  4.     publisher=models.ForeignKey(Publisher)
  5.     publication_date =models.DateField()
  6.     def __str__(self):
  7.         return self.title;

admin界面中加入book 输入中文如图:

 

又遇 django 中文编码问题_第1张图片

导致错误:Caught an exception while rendering: 'ascii' codec can't encode characters in position 4-10: ordinal not in range(128)

其中Title一项如果输入英文就不会出错,原因分析,

  1. def __str__(self):
  2.         return self.title;

返回值需要编码转换如下:

  1. 原因分析,def __str__(self):
  2.         return self.title.encode('utf-8');

就可以输入中文。

其实在django中,除了文件(source & templates)的编码要保存为utf-8外,文件本身的类型也要为utf-8,因为django的核心模块就是utf-8

你可能感兴趣的:(Date,exception,django,templates,Codec)