2015-10-18 196 views

回答

0

在這種情況下,FileNotFoundError實際上源於嘗試讀取「格式文件」,Django使用該格式文件來確定日期,時間和貨幣顯示等特定於區域設置的格式。在這種情況下,它的DATE_INPUT_FORMATSDateField

Django的允許的設置中指定爲格式的路徑:

https://docs.djangoproject.com/en/1.8/ref/settings/#format-module-path

否則有許多的這些在Django的分佈區域設置的目錄配置 - .../lib/python2.7/site-packages/django/conf/locale。例如:

../lib/python2.7/site-packages/django/conf/locale/en_AU/formats.py 
19:DATE_INPUT_FORMATS = (
20- '%d/%m/%Y', '%d/%m/%y',    # '25/10/2006', '25/10/06' 
21- # '%b %d %Y', '%b %d, %Y',   # 'Oct 25 2006', 'Oct 25, 2006' 
22- # '%d %b %Y', '%d %b, %Y',   # '25 Oct 2006', '25 Oct, 2006' 
23- # '%B %d %Y', '%B %d, %Y',   # 'October 25 2006', 'October 25, 2006' 
24- # '%d %B %Y', '%d %B, %Y',   # '25 October 2006', '25 October, 2006' 
25-) 

值得檢查有效的語言環境和相關文件。如果您可以禁用翻譯機器,或者至少在故障排除期間,您可以在settings中設置USE_I18N=False

可能值得仔細閱讀Django Internationalization and Localization文檔。

如果沒有特定於國家/地區的格式模塊,Django將使用en,這樣就可以。您可以嘗試使用Django的殼在項目中嘗試等價的調用:

$ ./manage.py shell 
>>> import datetime 
>>> datetime.datetime.strptime('2015-10-19', '%Y-%m-%d').date() 
datetime.date(2015, 10, 19) 

唯一的地方有Django的相關文件I/O格式爲模塊的加載所以只要django/conf/locale/en/formats.py可用那麼這種失敗的可能性是有限的,失敗了一些奇怪的事情發生在datetime,這似乎不大可能。沒有爲在Django的格式將檢索settings回退,所以你可以這一行添加到您的settings

DATE_INPUT_FORMATS = ('%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y') 
+0

這是我之前沒有檢查Django的功能集的有趣的部分。首先,我試圖用建議的USE_I18N = False更新settings.py,但是,我仍然看到錯誤。我還能去哪裏看? – arcee123

+0

這很不幸。目前的語言環境是什麼?也許你可以檢查匹配模塊文件的'/ root/.virtualenvs/ifthq/lib/python3.4/site-packages/django/conf/locale'子目錄,看看這些格式是如何定義的(或不是)。 –

+0

另外,考慮到這一點,在這種情況下,'USE_L10N'設置可能更相關,因爲它已經歸結爲日期格式 - https://docs.djangoproject.com/en/1.8/ref/settings/#std:設置 - USE_L10N –