Формат даты файла python / django pdf

Я использую python 2.7 & django 1.8.

Я noob, поэтому ответ на этот вопрос может быть очевидным, но я искал SO & Google, и я не могу найти ответ.

Мне дали код, который создает pdf. В нижнем колонтитуле pdf дата создания должна быть в формате 29 мая 2016 года . Месяц должен быть сокращенным названием локали ie: Jan, Feb, Mar, Apr, etc.

Однако дата в pdf 29 мая 2016. Месяц является нижним регистром и должен быть правильным.

Вот соответствующий код.

base.py настройка кода файла:

FORMAL_DATE_FORMAT_PYTHON = 'b d, Y'  # Dec 25, 2016

pdf_create_view.py код:

def form_valid(self, form):
    ....
    date_created = date(datetime.datetime.now(timezone), settings.FORMAL_DATE_FORMAT_PYTHON)

Выходной формат:

Created: may 29, 2016

Я пробовал несколько вещей, но я в тупике. Любые предложения, чтобы решить эту проблему, будут оценены.

1 ответ

  1. Я не уверен, что ваша dateфункция делает то, о чем идет речь. Но вы можете использовать:

    from django.utils import timezone
    
    def form_valid(self, form):
        ....
        date_created = timezone.now()  # This will create a timezone aware datetime
    

    Затем в шаблоне можно пройти в контекст:

    {
        'date_created': timezone.local_time(date_created, timezone.get_current_timezone()).strftime('%b %d, %Y')
        ...
    }
    

    Или передать date_createdв контекст и в шаблон использования:

    {{ date_created|date:"b d Y" }}
    

    Документацию по datetemplatetag можно найти по адресу https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#date

    Если dateфункция является функцией тега шаблона, встроенной в DJango, я бы использовал pdbи гарантировал, какое значение передается шаблону date_created.

    Если строка находится в верхнем регистре, так как она передается в шаблон, это может быть какой-то CSS, понижающий первую букву или генератор PDF. Попробуйте создать временное представление и посмотреть, что будет отображаться в виде HTML-файла. Если это верхний регистр, то это что-то в генераторе PDF, если не проверить на CSS снижение или JS.

    Если значение является строчным при отправке в шаблон (в вашем контексте), вы можете использовать capitalizeверхний регистр первой буквы.

    def form_valid(self, form):
        ....
        date_created = date(datetime.datetime.now(timezone), settings.FORMAL_DATE_FORMAT_PYTHON).capitalize()