Как я могу изменить формат шаблона даты Django по умолчанию?


100

У меня есть даты в формате ISO 8601 в базе данных, %Y-%m-%d. Однако когда дата передается в шаблон, получается что-то вроде Oct. 16, 2011.

Есть ли способ изменить формат так, как я хочу?

Ответы:


58

Я не уверен, как бы это изменить в файле настроек
bash

3
Таким же образом вы меняете все остальные настройки.
Игнасио Васкес-Абрамс,

22
Ссылка на документы на самом деле не является ответом, поэтому проголосовали против этого и проголосовали за ответ medmunds.
Эриком

276

В вашем шаблоне вы можете использовать dateфильтр Django . Например:

<p>Birthday: {{ birthday|date:"M d, Y" }}</p>

Дает:

День рождения: 29 января 1983 г.

Дополнительные примеры форматирования см. В документации по фильтру даты .


Я думаю, что это работает только в том случае, если дата указана как объект datetime. Что, если это просто строка, переданная из представления?
Mohammed Shareef C

3
Для произвольной строки, содержащей дату / время, я бы, вероятно, проанализировал ее в python datetime в коде представления. (Или даже раньше, если это возможно - везде, где эта строка даты впервые появляется в моем коде.) Но если вы действительно хотите использовать строки для передачи времени дат в ваши шаблоны Django, этот ответ выглядит полезным.
medmunds

Идеальный пример выше для использования в файле шаблона.
Винод Патидар

30

Установите оба DATE_FORMATиUSE_L10N

Чтобы внести изменения для всего сайта в Django 1.4.1, добавьте:

DATE_FORMAT = "Y-m-d"

в свой settings.pyфайл и отредактируйте:

USE_L10N = False

поскольку l10n отменяет DATE_FORMAT

Это задокументировано по адресу: https://docs.djangoproject.com/en/dev/ref/settings/#date-format.


21

Просто используйте это:

{{you_date_field|date:'Y-m-d'}}

Будет показано что-то вроде 2016-10-16 . Вы можете использовать формат как хотите.


8

Чтобы изменить формат даты в views.py, а затем назначить его шаблону.

# get the object details 
home = Home.objects.get(home_id=homeid)

# get the start date
_startDate = home.home_startdate.strftime('%m/%d/%Y')

# assign it to template 
return render_to_response('showme.html' 
                                        {'home_startdate':_startDate},   
                                         context_instance=RequestContext(request) )  


6

Если вам нужно показать короткую дату и время (11.08.2018 03:23), вы можете сделать это следующим образом:

{{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}

Подробная информация об этом теге здесь и больше о датах в соответствии с заданным форматом здесь

Пример:

<small class="text-muted">Last updated: {{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}</small>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.