[Note] Importance que __unicode__ est nécessaire lors de la définition de la classe de modèle de Django

Contexte

Je crée un blog en pratiquant Django, et j'ai défini le modèle suivant en fonction du manuel. À ce moment-là, je ne comprenais pas la signification de l'unicode, alors je l'ai résumé.

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

Qu'est-ce que l'Unicode?

Il semble que beaucoup de gens le savent, mais bien sûr je suis un débutant et je ne sais pas. Je suis un "Guguru Kas" autoproclamé, alors Kas a cherché sur Google comme Kas.

unicode est l'un des moyens de gérer des millions de langues de manière unifiée sur un ordinateur.

Il existe de nombreuses façons pour un ordinateur de comprendre un langage naturel, pour donner un exemple:

Je suis confus.

Donc, ces méthodes sont comme encoder, qui est un périphérique que l'ordinateur doit comprendre, mais il semble que cela dépend de chaque méthode.

Donc, bien sûr, si vous gérez une chaîne de caractères avec du python ordinaire, elle sera encodée, mais comme il existe de nombreux arrière-plans de lecteurs sur le Web, et chacun est échangé avec l'ordinateur en langage naturel en utilisant différentes méthodes, Il semble qu'il sera foiré en fonction de l'environnement du lecteur.

Un peu plus de détails

Par exemple, supposons que la lettre A soit codée en ASCII et stockée sur un ordinateur. Ensuite, réfléchissons à ce qui se passe lorsque l'environnement de l'appelant est utf-8.

Caractère A → ASCII → code de caractère= 123456

On suppose qu'il est enregistré avec le code tel que.

Donc, si l'environnement de l'appelant est utf-8, ...

Code de caractère= 123456 → utf-8 → lettre B

Une chaîne de caractères différente est renvoyée. En fin de compte, la même chaîne de caractères n'existe pas et la page Web entière devient ??????????????.

Quels sont les problèmes avec l'Unicode?

Je suis arrivé à ce point et j'ai pensé: "Dois-je gérer tous les codes de caractères avec unicode?", Mais il semble que le monde ne soit pas si pratique. Le ciel peut donner deux choses, mais apparemment, le monde humain est toujours un compromis.

unicode a abandonné la possibilité de ** montrer aux humains ** en échange de la possibilité d'être une norme unifiée pour les ordinateurs

On dirait. Ou plutôt, si ce n'est pas le cas, Tsuji ne correspondra pas, alors j'ai décidé de le comprendre provisoirement. (Le titre est donc un mémo.)

Comment les codes de caractères sont-ils gérés par Django?

Revenons à Django.

Dans Django, il semble que toutes les informations soient échangées en unicode dans le cadre. Ainsi, l'unicode est un peu ignoré lors de son affichage aux humains, donc pour le réparer, il est nécessaire d'écrire unicode à la place du modèle.

Pour le moment, l'article est terminé dans une situation pleine de précipitation, mais pour le moment, je vais faire un paragraphe et passer à autre chose.

Je sais ce que j'ai besoin de savoir (devrais)

Recommended Posts

[Note] Importance que __unicode__ est nécessaire lors de la définition de la classe de modèle de Django
Remarques lorsque gcloud est cassé
Notez que admin.py n'est pas reflété immédiatement lors de l'exécution de Django avec WSGIDaemonProcess
Créer une fausse classe qui triche également est une instance
L'histoire du champ de modèle Django disparaissant de la classe
Lorsque vous utilisez la propriété, utilisez une classe qui hérite d'un objet (classe de style nouveau)