我正在尝试使用模板标签将字符串转换为模板中的日期,但它不起作用
{% load templat_tag_file %}
<input name="range2" type="date" {% if request.GET.range2 %}
value="{{ request.GET.range2|convert_str_date }}"{% endif %}/>
我的 template_tag_file.py :
from datetime import datetime
register = template.Library()
@register.filter
def convert_str_date(value):
return datetime.strptime(value, '%Y-%m-%d').date()
我收到此错误:时间数据“”与格式“%Y-%m-%d”不匹配
最佳答案
您无法分配 python date
反对 <input type="date">
。您需要将其转换为字符串:
from datetime import datetime
register = template.Library()
@register.filter
def convert_str_date(value):
<b>return str(datetime.strptime(value, '%Y-%m-%d').date())</b>
正如@quick提到的,你需要使用 request.GET
相反 request.Get
{% load templat_tag_file %}
<input name="range2" type="date" {% if request.GET.range2 %}
value="{{ request.GET.range2|convert_str_date }}"{% endif %}/>
更新:
如果格式类似于1988-02-22
,则不需要定义templatetag。 ,这会起作用:
<input name="range2" type="date" value="{{ request.GET.range2 }}" />
<input name="range2" type="date" value="1988-02-22" />
关于python - 将字符串转换为日期 django 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60990538/