Показать dd/mm/yy в django

У меня есть поле ввода типа Дата, как показано ниже.

# forms.py
widgets = {
            'date_of_birth': forms.DateInput(attrs={'type': 'date'})
        }   

Я использую приведенный ниже код в HTML-шаблоне.

<label class="form-label">Date of Birth</label>
{{ form.date_of_birth }}  

Я получаю формат mm/dd/yy, но я хотел бы получить формат dd/mm/yy.

В шаблоне Django вы можете форматировать даты с помощью фильтра даты. Чтобы отформатировать дату в формате dd/mm/yy.

{{ form.date_of_birth|date:"d/m/y" }}

Если форматирование даты не работает непосредственно в шаблоне, это может быть связано с тем, что form.date_of_birth - это не непосредственно объект даты, а поле формы.

Вам необходимо убедиться, что значение из поля формы является объектом даты. Это можно сделать в представлении, прежде чем передавать его в шаблон.

from datetime import datetime

def your_view(request):
    form = YourForm(request.POST or None)
    if form.is_valid():
        date_of_birth_str = form.cleaned_data['date_of_birth']
        # Ensure date_of_birth_str is a string and convert to datetime object
        date_of_birth = datetime.strptime(date_of_birth_str, '%m/%d/%y')  # Adjust this according to your input format
        # Pass the datetime object to the template context
        context = {'form': form, 'date_of_birth': date_of_birth}
        return render(request, 'your_template.html', context)
    return render(request, 'your_template.html', {'form': form})

Вы можете просто передать формат следующим образом:

widgets = {
            'date_of_birth': forms.DateInput(format="%d-%m-%Y", attrs={'type': 'date'})
        } 
Вернуться на верх