Получение неправильного формата даты в Django
Я пытаюсь создать форму для получения ввода даты от пользователя и последующей передачи этого ввода в другой скрипт на python Мой код формы Django выглядит следующим образом
from Django import forms
class NameForm(forms.Form):
lev=forms.IntegerField(label='lev')
status = forms.CharField(label='status', max_length=100)
start_date = forms.DateField(widget=forms.DateInput(format = '%Y/%m/%d',attrs={'type': 'date'}))
я получаю дату и все остальные значения в моем файле views.py и затем передаю их моему скрипту python мой код views.py таков
def generate(request):
form=NameForm(request.POST)
if form.is_valid():
a=str(form.cleaned_data.get('lev'))
b= form.cleaned_data.get('status')
c=str(form.cleaned_data.get('start_date'))
output=run([sys.executable,'C:\\Users\\siddhant\\Desktop\\internship\\indicator\\work\\water.py',a,b,c],stdout=PIPE,text=True)
events_list=level.objects.all()
return render(request,'result.html',{'res':events_list})
и я делаю преобразование переданной даты в strptime в моем коде work.py следующим образом
current_level=int(sys.argv[1])
x=sys.argv[2]
start_date=sys.argv[3]
print(start_date)
start=datetime.strptime(start_date, "%y/%d/%m")
но я получаю ошибку ValueError: данные времени '2022-01-01' не соответствуют формату '%y/%d/%m' пожалуйста, может кто-нибудь подсказать, как справиться с этой проблемой
Вам необходимо правильно отформатировать объект date
при вызове функции:
def generate(request):
form = NameForm(request.POST)
if form.is_valid():
a = str(form.cleaned_data['lev'])
b = form.cleaned_data.get('status')
c = form.cleaned_data.get('start_date').strftime('%y/%d/%M')
output=run([sys.executable,'C:\\Users\\siddhant\\Desktop\\internship\\indicator\\work\\water.py',a,b,c],stdout=PIPE,text=True)
В программе water.py
вы должны разбирать его с помощью %M
, а не %m
, иначе вы разбираете минуту, а не месяц:
current_level = int(sys.argv[1])
x = sys.argv[2]
start_date = sys.argv[3]
print(start_date)
start = datetime.strptime(start_date, "%y/%d/%M")