python / django pdf文件的日期格式

时间:2016-05-29 08:39:21

标签: python django date pdf

我正在使用python 2.7& django 1.8。

我是一个菜鸟,所以这个问题的答案可能很明显,但我已经搜索了SO&谷歌,我找不到答案。

我获得了一些创建pdf的代码。在pdf的页脚,创建日期应采用 2016年5月29日的格式。月份应该是语言环境的缩写名称,即:Jan,Feb,Mar,Apr等。

然而,pdf中的日期可能是2016年5月29日。月份是小写的,应该是正确的情况。

以下是相关代码。

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 个答案:

答案 0 :(得分:0)

我不确定你的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" }}

date模板标签上的文档可在https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#date

找到

如果date函数是DJango中内置的模板标记函数,我会使用pdb并确保将date_created的模板传递给哪个值。

如果字符串是大写的,因为它被发送到模板,它可能是一些CSS降低第一个字母或PDF生成器。尝试创建临时视图并查看将显示为HTML文件的内容。如果它是大写的,那么如果不检查CSS降低或JS,它就是PDF生成器中的东西。

如果该值在发送到模板时为小写(在您的上下文中),您可以使用capitalize大写第一个字母。

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