나는 django를 처음 사용하고 그것을 배우기 위해 트위터 클론을 작성하고 있습니다.
다음과 같은 모델이 있습니다
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)에 없습니다. 다음 메시지를 전달했습니다. [Bad Unicode data] (클래스 'core.models.message')
다른 스택 오버플로 답변은 이것이 유니 코드 문제라고 제안하는 것 같지만 테스트를 다음으로 변경하면
"찌르다"
오류가 발생하지 않습니다.
작은 따옴표로만 오류가 발생하는 이유는 무엇입니까? 장고 양식 / 모델 코드를 통해이 문제를 어떻게 포착합니까? 가급적이면 입력 양식을 저장할 때?
Python2.7 또는 Python3을 사용하고 있습니까? Python2.7을 사용하는 경우를 사용 __unicode__()
하고 그렇지 않으면 __str__()
.
__str__ or __unicode__?
이 링크 의 " "섹션을 살펴보십시오 . 올바른 사용을 위해 __unicode__()
및 에 대한 문서를 참조하십시오 __str__()
.
편집 :
나는 당신의 오류를 복제 할 수 없습니다. 관리자에게 잘 액세스 할 수 있습니다. 혹시 이전 버전의 Django (1.8 이전 버전)를 사용하고 있습니까?
Django 문서에서 보증하는 유니 코드 문자열을 처리하는 적절한 방법이므로 대신 이것을 사용해보십시오.
def __unicode__(self):
return u'%s_%s_%s___%s' % (self.id, self.text, self.date_n_time, self.parent_2)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다