Столкнулся с локализацией даты в Django, а точнее в Django Rest Framework хотел видеть в json ответе названия месяца на русском.
В моем Django приложении есть models.py:
class Place(models.Model):
date_end = models.DateTimeField('date end')
date_start = models.DateTimeField('date start')
street = models.CharField(max_length=200)
building = models.CharField(max_length=20)
def __str__(self):
return "{} {}, {:%d %b %Y %H:%M} - {:%d %b %Y %H:%M}".format(self.street, self.building,
self.date_start, self.date_end
)
В настройках Django - settings.py установлена русская кодировка:
LANGUAGE_CODE = 'ru-ru'
USE_I18N = True
USE_L10N = True
Казалось бы, кодировка установлена, но все равно и DRF и админке в дате выдает название месяца на английском:
"31 Jul 2017 09:00"
Нашел рецепт, который нужно поместить в settings.py:
from django.conf.locale.ru import formats as ru_formats
ru_formats.DATETIME_FORMAT = "d b Y H:M"
не сработало.
Стал смотреть в сторону локализации в python. И все оказалось просто, надо добавить в settings.py Django проекта:
import locale
locale.setlocale(locale.LC_ALL, "ru_RU.utf8")
и теперь дата, и в админке и в Django Rest Framework, преобразовывается в русскую:
"31 июл 2017 09:00"
Вроде бы вопрос решен, но только если проект исключительно для русской аудитории, а если проект интернациональный, то я пока решения не нашел.
В моем Django приложении есть models.py:
class Place(models.Model):
date_end = models.DateTimeField('date end')
date_start = models.DateTimeField('date start')
street = models.CharField(max_length=200)
building = models.CharField(max_length=20)
def __str__(self):
return "{} {}, {:%d %b %Y %H:%M} - {:%d %b %Y %H:%M}".format(self.street, self.building,
self.date_start, self.date_end
)
В настройках Django - settings.py установлена русская кодировка:
LANGUAGE_CODE = 'ru-ru'
USE_I18N = True
USE_L10N = True
Казалось бы, кодировка установлена, но все равно и DRF и админке в дате выдает название месяца на английском:
"31 Jul 2017 09:00"
Нашел рецепт, который нужно поместить в settings.py:
from django.conf.locale.ru import formats as ru_formats
ru_formats.DATETIME_FORMAT = "d b Y H:M"
не сработало.
Стал смотреть в сторону локализации в python. И все оказалось просто, надо добавить в settings.py Django проекта:
import locale
locale.setlocale(locale.LC_ALL, "ru_RU.utf8")
и теперь дата, и в админке и в Django Rest Framework, преобразовывается в русскую:
"31 июл 2017 09:00"
Вроде бы вопрос решен, но только если проект исключительно для русской аудитории, а если проект интернациональный, то я пока решения не нашел.
Комментариев нет:
Отправить комментарий