Django日期过滤器:为什么使用的格式与日期时间库中的格式不同?
要使用 date 过滤器格式化日期,您必须使用以下格式:
{{ my_date|date:"Y-m-d" }}
如果您使用标准 datetime 中的 strftime,则必须使用以下格式:
my_date.strftime("%Y-%m-%d")
所以我的问题是......它是不是很难看(我猜这是因为 %
也用于标签,因此被转义或其他什么)?
但这不是主要问题...我想在整个项目中使用 settings.py
中参数化的相同 DATE_FORMAT
,但因此看来我不能!是否有解决方法(例如,在日期格式化为 {{ my_date|date|dream_filter }}
后删除 %
的过滤器,因为如果我只使用DATE_FORMAT = "%Y-%m-%d"
我收到类似 %2001-%6-%12
) 的内容?
For formatting a date using date filter you must use the following format :
{{ my_date|date:"Y-m-d" }}
If you use strftime from the standard datetime, you have to use the following :
my_date.strftime("%Y-%m-%d")
So my question is ... isn't it ugly (I guess it is because of the %
that is used also for tags, and therefore is escaped or something) ?
But that's not the main question ... I would like to use the same DATE_FORMAT
parametrized in settings.py
all over the project, but it therefore seems that I cannot ! Is there a work around (for example a filter that removes the %
after the date has been formatted like {{ my_date|date|dream_filter }}
, because if I just use DATE_FORMAT = "%Y-%m-%d"
I got something like %2001-%6-%12
)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 DATE_INPUT_FORMATS。
use DATE_INPUT_FORMATS.
虽然这可能不是“正确”的答案,但我通过在设置中添加另一个变量并在各处使用它来解决这个问题。我有用 JavaScript、
datetime
和 Django 模板格式化的日期,因此我添加了这三个模板。我还为喜欢不同格式的墨西哥客户进行本地化。
While this may not be the "right" answer, I got around this by adding another variable to settings and using it all over the place. I have dates formatted in JavaScript,
datetime
, and Django templates, so I added all three.I also run them through localization for our customers in Mexico who prefer a different format.
不是您主要问题的一部分,但无论如何都很方便。我发现文档中提到日期过滤器格式基于 php 的 日期格式。
Not part of your main question but could be handy anyway. I found it mentioned in the docs that the date filter format is based on php's date format.
您可以尝试编写自定义过滤器:
模板中的用法:
You could try writing a custom filter:
usage in templates: