Конвертировать строку в дату django шаблон - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь преобразовать строку в дату в шаблоне, используя тег шаблона, но он не работает

{% load templat_tag_file %}  
<input name="range2" type="date" {% if request.GET.range2 %}
value="{{ request.GET.range2|convert_str_date }}"{% endif %}/>

my templat_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'

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Вы не предоставили достаточно информации. Я думаю, вы должны использовать 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 %}/>
0 голосов
/ 02 апреля 2020

Нельзя назначить объект 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, это будет работать:

<input name="range2" type="date" value="{{ request.GET.range2 }}" />

<input name="range2" type="date" value="1988-02-22" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...