2016-05-29 61 views
0

我正在使用python 2.7 & django 1.8。python/django的日期格式pdf文件

我是一個noob,所以這個問題的答案可能很明顯,但我搜索了谷歌,我找不到答案。

我已經給出了一些創建pdf的代碼。在pdf的頁腳處,創建日期的格式應爲2016年5月29日。本月應該是本地的縮寫名稱,即:1月,2月,3月,4月等。

但是,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

你如何創建pdf? 'wkhtmltopdf'還是其他一些工具?請發佈相關的代碼/模板! – schwobaseggl

+0

'date'函數來自哪裏? – solarissmoke

+0

是'wkhtmltopdf'。 – user3354539

回答

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文件的內容。如果它是大寫,那麼它是在PDF生成器中的東西,如果不檢查CSS降低或JS。

如果該值在發送到模板時處於小寫狀態(在您的上下文中),則可以使用capitalize將第一個字母大寫。

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