Як я можу змінити стандартний формат шаблона дати Django?


100

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

Чи є спосіб, щоб я маніпулював форматом до того, що хочу?

Відповіді:


56

Я не впевнений, як я змінив би це у файлі налаштувань
bash-

3
Так само ви змінюєте всі інші налаштування.
Ігнасіо Васкес-Абрамс

22
Посилання на документи насправді не є відповіддю, тому спростував цю відповідь та відповів медикам.
eric

275

У вашому шаблоні ви можете використовувати dateфільтр Джанго . Наприклад:

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

Дає:

День народження: 29 січня 1983 року

Більше прикладів форматування в документах з фільтром дат .


Я думаю, що це працює лише в тому випадку, якщо дата подається як об'єкт дати. Що робити, якщо це просто рядок, переданий з виду?
Мохаммед Шаріф C

2
Для довільної рядки, що містить дату / час, я, мабуть, проаналізував би її в даті часу python у коді перегляду. (Або навіть раніше, якщо можливо - там, де цей рядок вперше надходить у мій код.) Але якщо ви дійсно хочете використовувати рядки для передачі часових дат у ваші шаблони 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


20

Просто скористайтеся цим:

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

Це покаже щось на зразок 2016-10-16 . Ви можете використовувати формат, як хочете.


8

Щоб змінити формат дати в view.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.