Фильтр даты Django: почему используемый формат отличается от формата в библиотеке datetime? - PullRequest
1 голос
/ 10 июня 2010

Для форматирования даты с использованием фильтра date необходимо использовать следующий формат:

{{ my_date|date:"Y-m-d" }}

Если вы используете strftime из стандартного datetime , вы должны использовать следующее:

my_date.strftime("%Y-%m-%d")

Так что мой вопрос ... разве это не уродливо (наверное, это из-за %, который используется также для тегов, иследовательно, экранируется или что-то в этом роде??

Но это не главный вопрос ... Я хотел бы использовать один и тот же DATE_FORMAT, параметризованный в settings.py, во всем проекте, но, следовательно, кажется, что я не могу!Есть ли обходной путь (например, фильтр, который удаляет % после того, как дата была отформатирована как {{ my_date|date|dream_filter }}, потому что, если я просто использую DATE_FORMAT = "%Y-%m-%d", я получаю что-то вроде %2001-%6-%12)?

Ответы [ 4 ]

3 голосов
/ 23 ноября 2012

использовать DATE_INPUT_FORMATS.

from django.conf import settings
py_format = settings.DATE_INPUT_FORMATS[0]
1 голос
/ 10 июня 2010

Хотя это не может быть «правильным» ответом, я обошел это, добавив другую переменную в настройки и используя ее повсеместно. У меня есть даты, отформатированные в JavaScript, datetime и шаблонах Django, поэтому я добавил все три.

TIME_ZONE = 'America/Phoenix'  
DATETIME_FORMAT = 'm-d-Y H:m:s T'
DATE_FORMAT = _('m-d-Y')       
JS_DATE_FORMAT = _('mm-dd-yy')
PERC_DATE_FORMAT = _('%m-%d-%Y')

Я также провожу их через локализацию для наших клиентов в Мексике, которые предпочитают другой формат.

0 голосов
/ 31 мая 2013

Вы можете попробовать написать собственный фильтр:

#app/templatetags/python_date.py
from datetime import date, datetime

from django import template

register = template.Library()

@register.filter(name='pythondate')
def python_date_filter(value, arg):
    if not type(value) == date and not type(value) == datetime:
        raise Exception('Value passed in to the filter must be a date or a datetime.')

    return value.strftime(str(arg))

использование в шаблонах:

{% load python_date %}

{{ some_date|pythondate:'%Y-%m-%d' }}
0 голосов
/ 04 августа 2010

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

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