2015-10-18 202 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 –