Django: как получить дату формата в представлениях?
Мне нужно использовать SHORT_DATETIME_FORMAT в представлении.
def manage_list(request):
user = User.objects.filter().order_by('date_joined')
usrs = []
for usr in user:
usrs.append({
_('First name'): usr.first_name,
_('Last name'): usr.last_name,
_('Email'): usr.email,
_('Active'): usr.is_active,
_('Superuser'): usr.is_superuser,
_('Staff'): usr.is_staff,
_('Joined date'): usr.date_joined.strftime(SHORT_DATETIME_FORMAT),
})
data = simplejson.dumps(usrs, indent=4)
return HttpResponse(data, mimetype='application/json')
usr.date_joined имеет тип "поля даты", я думаю. Я хочу отформатировать эти данные в соответствии с django locale. поэтому эта строка, вероятно, должна помочь. Я знаю, что есть фильтр шаблонов, который делает это, но я хочу отформатировать usr.date_joined только в режиме просмотра - сохранение django choosen locale.
Если есть другие способы сделать это, пожалуйста, приведите примеры. в конце концов, я просто хочу иметь сформированную дату в соответствии с django locale, которая показывает только дату и время, я думаю, что эта константа должна делать то, что говорит название.
Ответы
Ответ 1
Модуль django.utils.formats
- это то, что вы ищете. Единственная ссылка, которую я мог найти в документах, была в примечаниях к выпуску Django 1.2.
Помните, что локализация будет работать, только если параметр USE_L10N
True
. Вы можете использовать date_format следующим образом.
from datetime import datetime
from django.utils import formats
date_joined = datetime.now()
formatted_datetime = formats.date_format(date_joined, "SHORT_DATETIME_FORMAT")
Ответ 2
Вы можете попробовать использовать django.utils.dateformat.DateFormat
>>> from datetime import datetime
>>> dt = datetime.now()
>>> from django.utils.dateformat import DateFormat
>>> from django.utils.formats import get_format
>>> df = DateFormat(dt)
>>> df.format(get_format('DATE_FORMAT'))
u'April 23, 2013'
>>> df.format('Y-m-d')
u'2013-04-23'
Дополнительная информация с использованием Python:
import django
help(django.utils.dateformat)
Ответ 3
Чтобы использовать фильтр Django date в представлении используйте defaultfilters
, например:
from django.template import defaultfilters
formatted_date = defaultfilters.date(usr.date_joined, "SHORT_DATETIME_FORMAT")
Ответ 4
Используйте localize
ярлык.
>>> from django.utils.formats import localize
>>> from datetime import datetime
>>>
>>> print(datetime.now())
2016-12-18 19:30:35.786818
>>> print(localize(datetime.now()))
18 декабря 2016 г. 19:30