Джанго: как получить формат даты в представлениях? - PullRequest
34 голосов
/ 27 ноября 2011

Мне нужно использовать 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.так что эта строка, вероятно, должна помочь.Я знаю, что есть шаблонный фильтр, который делает то, что я хочу, но я хочу отформатировать usr.date_joined только для просмотра - сохранение выбранной локали django.

Если есть другие способы сделать это, приведите примеры.в конце я просто хочу иметь форматированную дату в соответствии с локалью django, которая показывает только дату и время, я думаю, что эта константа должна делать то, что говорит название ..

Ответы [ 5 ]

65 голосов
/ 27 ноября 2011

Модуль 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")
23 голосов
/ 23 апреля 2013

Возможно, вы захотите попробовать использовать 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)
11 голосов
/ 10 сентября 2013

Чтобы использовать фильтр Django date в представлении, используйте defaultfilters, например:

from django.template import defaultfilters

formatted_date = defaultfilters.date(usr.date_joined, "SHORT_DATETIME_FORMAT")
1 голос
/ 18 декабря 2016

Использовать 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
0 голосов
/ 10 января 2018
from django.utils.formats import date_format

date_format(usr.date_joined)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...