You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HTML中将日期从“月 日,年”转换为yyyy-mm-dd格式适配date输入框

问题根因

HTML 中type="date"的输入框对value属性的格式有强制要求,仅接受YYYY-MM-DD格式的字符串,不符合格式的赋值会被浏览器直接忽略。
首次加载时Django渲染的是日期对象的本地化格式(如Nov 12, 2021),不符合要求因此赋值失效;手动选择日期提交后,存入数据库的是前端输入框返回的合法格式,后续加载时渲染的内容符合要求因此可以正常显示。

修复方案

1 模板层直接格式化(推荐)

直接在模板中使用Django内置的date过滤器将日期转为符合要求的格式,同时补上缺失的属性引号、POST表单必填的csrf防护标记,修正后前端代码如下:

<html>
<body>
<form method="POST">
{% csrf_token %}
<input type='date' value="{{ project.deadline|date:'Y-m-d' }}">
<input type='submit' value='submit'>
</form>
</body>
</html>

2 视图层提前格式化

也可以在视图层提前把日期转为指定格式的字符串再传递到模板:

from django.utils.dateformat import format

def profile(request,id):
    project=Project.objects.get(id=id)
    # 提前格式化日期为YYYY-MM-DD
    project.deadline_str = format(project.deadline, 'Y-m-d')
    if request.method=='POST':
        # 注意原代码中的request.post为小写是错误写法,需改为大写的POST
        deadline=request.POST.get('deadline')
        project.deadline=deadline
        project.save()
    return render(request,'edit_project.html',{'id':id,'project':project})

对应模板中输入框的写法改为:

<input type='date' value="{{ project.deadline_str }}">

内容的提问来源于stack exchange,提问作者Harshit Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 16:24:05