DateFields未使用自定义DATE_FORMAT作为输出

时间:2017-05-15 01:27:23

标签: python django

我已关注Django's documentation,以便为我的项目中使用的所有DateField设置日期输出格式。

尽管如此,日期仍然没有以我执行的格式呈现。它们会以YYYY-mm-dd的形式输出。

这是我的配置:

settings.py

USE_L10N = False

DATE_FORMAT = '%d/%m/%Y'
SHORT_DATE_FORMAT = '%d/%m/%Y'

DATE_INPUT_FORMATS = [
    '%d/%m/%Y', # '25/10/2006'
]

我在这里缺少什么,或者这是Django的错误?

2 个答案:

答案 0 :(得分:0)

您是否指定了模板引擎应如何格式化变量?您需要在模板中添加输出变量的date标记。

From the documentation

  

如果value是日期时间对象(例如,datetime.datetime.now()的结果),则输出将是字符串' Wed 09 Jan 2008'。

     

如果在没有格式字符串的情况下使用,则使用DATE_FORMAT格式说明符。假设设置与前一个示例相同:

     

[...]

意思是你必须做这样的事情:

{{ my_variable|date }}

答案 1 :(得分:0)

在IRC的FunkyBob的帮助下,问题已经解决。

我正在为我的DateField使用自定义小部件:

class CalendarWidget(forms.TextInput):
    class Media:
        css = {
            'all': ('main/js/vendor/pickadate.js-3.5.6/lib/compressed/themes/default.css',
                    'main/js/vendor/pickadate.js-3.5.6/lib/compressed/themes/default.date.css',)
        }
        js = ('main/js/vendor/pickadate.js-3.5.6/lib/compressed/picker.js',
              'main/js/vendor/pickadate.js-3.5.6/lib/compressed/picker.date.js',
              'main/js/datepicker.min.js',)

我只需使用forms.DateInput代替forms.TextInput,以便以正确的格式输出我的日期。