我正在使用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
我尝试了几件事,但我很难过。任何解决此问题的建议都将受到赞赏。
答案 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()