[PYTHON] [Hinweis] Bedeutung, dass __unicode__ erforderlich ist, wenn die Modellklasse von Django definiert wird

Hintergrund

Ich mache einen Blog, indem ich Django übe, und ich habe das folgende Modell gemäß dem Lehrbuch definiert. Zu dieser Zeit verstand ich die Bedeutung von Unicode nicht und fasste sie zusammen.

class Blog(models.Model):
	title = models.CharField(max_length=100, unique=True)
	slug = models.SlugField(max_length=100, unique =True)
	body = models.TextField()
	posted = models.DateField(db_index=True,auto_now_add=True)
	category = models.ForeignKey('blog.Category')

	def __unicode__(self):
		return '%s' % self.title

Was ist Unicode?

Es scheint, dass viele Leute es wissen, aber natürlich bin ich ein Anfänger und ich weiß es nicht. Ich bin ein selbsternannter "Guguru Kas", also googelte Kas wie Kas.

Unicode ist eines der Mittel, um Millionen von Sprachen auf einem Computer einheitlich zu handhaben.

Es gibt viele Möglichkeiten, wie Computer natürliche Sprache verstehen können, um ein Beispiel zu nennen:

Ich bin verwirrt.

Diese Methoden sind also wie Codierung, ein Gerät, das der Computer verstehen kann, aber es scheint, dass es von jeder Methode abhängt.

Wenn Sie also eine Zeichenfolge mit normalem Python verarbeiten, wird sie codiert. Da es jedoch viele Hintergründe von Lesern im Web gibt und jeder mit dem Computer in natürlicher Sprache mit unterschiedlichen Methoden interagiert, Es scheint, dass es abhängig von der Umgebung des Lesers durcheinander gebracht wird.

Ein bisschen mehr Detail

Angenommen, der Buchstabe A ist in ASCII codiert und auf einem Computer gespeichert. Lassen Sie uns dann darüber nachdenken, was passiert, wenn die Umgebung des Anrufers utf-8 ist.

Zeichen A → ASCII → Zeichencode= 123456

Es wird davon ausgegangen, dass es mit dem Code wie gespeichert wird.

Wenn die Umgebung des Anrufers utf-8 ist, ...

Zeichencode= 123456 → utf-8 → Buchstabe B.

Eine andere Zeichenfolge wird zurückgegeben. In der Zwischenzeit existiert nicht dieselbe Zeichenfolge und die gesamte Webseite wird zu ???????????????.

Was sind die Probleme mit Unicode?

Ich kam zu diesem Punkt und dachte: "Soll ich alle Zeichencodes mit Unicode behandeln?", Aber es scheint, dass die Welt nicht so bequem ist. Der Himmel mag zwei Dinge geben, aber anscheinend ist die menschliche Welt immer ein Kompromiss.

Unicode gab die Fähigkeit auf, sich dem Menschen zu zeigen, um die Fähigkeit zu erlangen, ein einheitlicher Standard für Computer zu sein

Es sieht aus wie. Oder besser gesagt, wenn dies nicht der Fall ist, passt Tsuji nicht zusammen, also habe ich beschlossen, es vorläufig zu verstehen. (Der Titel ist also ein Memo.)

Wie werden Zeichencodes von Django behandelt?

Kommen wir zurück zu Django.

In Django scheinen alle Informationen innerhalb des Frameworks in Unicode ausgetauscht zu werden. Unicode wird also ein wenig übersprungen, wenn es Menschen gezeigt wird. Um dies zu beheben, muss unicode anstelle des Modells geschrieben werden.

Der Artikel endet vorerst in einer Situation voller Eile, aber vorerst werde ich einen Absatz machen und weitermachen.

Ich weiß, was ich wissen muss (sollte)

Recommended Posts

[Hinweis] Bedeutung, dass __unicode__ erforderlich ist, wenn die Modellklasse von Django definiert wird
Notizen, wenn gcloud kaputt ist
Beachten Sie, dass admin.py nicht sofort angezeigt wird, wenn Django mit WSGIDaemonProcess ausgeführt wird
Erstellen Sie eine gefälschte Klasse, die auch betrügt, ist Instanz
Die Geschichte des Django-Modellfeldes verschwindet aus der Klasse
Verwenden Sie bei Verwendung einer Eigenschaft eine Klasse, die ein Objekt erbt (Klasse neuen Stils).