Django 1.11中date_format返回乱码,如何排查解决?
Django 1.11 date_format 乱码问题解决
问题出在你传递给date_format的参数上:你传入的是字符串字面量'NUMERICAL_DATE_FORMAT',而不是这个配置变量本身。
Django的date_format函数第二个参数如果是字符串,会直接把它当作日期格式模板来解析,而不是去读取你在格式模块中定义的配置项。当你传入'NUMERICAL_DATE_FORMAT'时,函数会把字符串里的每个字符当作日期占位符处理(比如N对应月份全称、U对应时间戳、M对应月份缩写等),最终拼接出你看到的乱码内容。
正确的解决方式
方式一:直接传入格式字符串
如果你明确要使用d.m.Y格式,直接把这个字符串传给date_format即可:
from django.utils.formats import date_format date_format(date, 'd.m.Y')
方式二:导入配置变量传入
如果你想复用在格式模块中定义的NUMERICAL_DATE_FORMAT,需要从settings中导入这个变量再传递:
from django.conf import settings from django.utils.formats import date_format date_format(date, settings.NUMERICAL_DATE_FORMAT)
额外确认
确保你的FORMAT_MODULE_PATH配置正确,比如在项目settings.py中:
FORMAT_MODULE_PATH = [ 'your_project_name.formats', ]
然后在对应语言的格式文件(比如your_project_name/formats/ro/formats.py,对应罗马尼亚语时区)中确实定义了:
NUMERICAL_DATE_FORMAT = 'd.m.Y'
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

