Django/Python:单引号导致Django管理接口抛出错误
我是django的新手,我正在写一个twitter克隆来学习它 我有一个像下面这样的模型Django/Python:单引号导致Django管理接口抛出错误,python,django,unicode,Python,Django,Unicode,我是django的新手,我正在写一个twitter克隆来学习它 我有一个像下面这样的模型 class message(models.Model): text = models.TextField() date_n_time = models.DateTimeField(default=datetime.now, null=True,blank=True) parent_2 = models.ForeignKey('self',null=True,blank=True)
class message(models.Model):
text = models.TextField()
date_n_time = models.DateTimeField(default=datetime.now, null=True,blank=True)
parent_2 = models.ForeignKey('self',null=True,blank=True)
def __unicode__(self):
return str(self.id)+"_"+self.text+"_"+str(self.date_n_time)+"_"+"___"+str(self.parent_2)
现在,我添加了一条文本等于以下内容的消息(引号是我通过Django创建表单输入的内容的一部分)
“戳”
我试图通过管理界面访问消息对象:127.0.0.1:8000/admin/core/message/
我在中收到以下错误消息
“ascii”编解码器无法解码位置9中的字节0xe2:序号不在
范围(128)。您传入了消息:[错误的Unicode数据](类
'core.models.message')
其他堆栈溢出的答案似乎表明这是unicode问题,但如果我将测试更改为
“刺激”
我没有得到任何错误
为什么只有单引号会出现错误?我如何通过django表单/模型代码发现这个问题,最好是在保存输入表单时?您使用的是Python2.7还是Python3?如果您使用的是Python2.7,请使用
\uuuUnicode\uuuuuuuo()
,否则,请使用\uuuuu str\uuo()
请查看本节中的“\uuuuu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
编辑:
我无法复制您的错误。我可以很好地访问管理员。您是否使用较旧版本的Django(早于1.8)?
请尝试使用它,因为这应该是处理Django文档所认可的unicode字符串的正确方法
def __unicode__(self):
return u'%s_%s_%s___%s' % (self.id, self.text, self.date_n_time, self.parent_2)
您使用的是Python2.7还是Python3?如果您使用的是Python2.7,请使用\uuuUnicode\uuuu()
,否则,请使用\uuu str\uuu()
请查看本节中的“\uuuuu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
编辑:
我无法复制您的错误。我可以很好地访问管理员。您是否使用较旧版本的Django(早于1.8)?
请尝试使用它,因为这应该是处理Django文档所认可的unicode字符串的正确方法
def __unicode__(self):
return u'%s_%s_%s___%s' % (self.id, self.text, self.date_n_time, self.parent_2)
我会尝试将您的unicode更改为以下内容:
def __unicode__(self):
return u'{}"_"{}"_"{}"_""__"{}'.format(self.id, self.text, self.date_n_time, self.parent_2)
这应该返回你最初想要的,包括引文。我也会考虑把代码部分>代码“→”、“代码”>代码> >代码>。如果它们要相互跟随,就没有真正的理由来分隔下划线。
如果不需要引号,只需删除它们。保留{}
。与“%s”%(上下文)
祝你的克隆好运!我会尝试将你的unicode更改为以下内容:
def __unicode__(self):
return u'{}"_"{}"_"{}"_""__"{}'.format(self.id, self.text, self.date_n_time, self.parent_2)
这应该返回你最初想要的,包括引文。我也会考虑把代码部分>代码“→”、“代码”>代码> >代码>。如果它们要相互跟随,就没有真正的理由来分隔下划线。
如果不需要引号,只需删除它们。保留{}
。与“%s”%(上下文)
祝你的克隆好运!我一提交,就意识到模型具有unicode功能。这就解释了错误产生的原因。但我不知道如何解决此问题。感谢任何帮助。我一提交,就意识到模型具有unicode功能。这就解释了错误产生的原因。但我不知道如何解决此问题。感谢您的帮助。我使用的是Python2.7。正如我在评论中提到的,我使用的是unicode,所以这不是问题。管理面板解释它的方式是问题。我使用的是Python2.7。正如我在评论中提到的,我使用的是unicode,所以这不是问题。管理面板解释它的方式是问题。这与ans一起工作wer@Wannabe Coder.谢谢!这与答案@Wannabe Coder.一起工作。谢谢!