Почему этот Django кодирует использование _
перед 'имеет favicon'
has_favicon = models.BooleanField(_('has favicon'))
Если вы посмотрите в операторах импорта, то увидите, что они привязали _ к функции, которая превращает вещи в юникод и локализует их, написав:
from django.utils.translation import ugettext_lazy as _
_
в Django - это конвенция, которая используется для локализации текстов. Это псевдоним для ugettext_lazy. Более подробно о ней читайте ленивый перевод в документах.
_
обычно это макрос/функция из gettext, это значит, что аргумент - локализованная строка. На самом деле gettext изначально является пакетом для программ на Си, переносившимся на многие другие языки на протяжении многих лет.