目前,我在form.py中有这个类
class DateForm(forms.Form):
date = forms.DateTimeField(
input_formats=['%m/%d/%Y %H:%M'],
widget=forms.DateTimeInput(attrs={
'class': 'form-control datetimepicker-input',
'data-target': '#datetimepicker1'
}))
在我的views.py中,我有这样一段代码,它检查表单是否有效。
checkout = request.POST.get('place_order')
if checkout:
form = DateForm(request.POST)
print(form)
if form.is_valid():
pickup_time = form.cleaned_data['date']
然而,我得到这个错误
<tr><th><label for="id_date">Date:</label></th><td><ul class="errorlist"><li>Enter a valid
date/time.</li></ul><input type="text" name="date" value="04/05/0001 6:07 PM" class="form-
control datetimepicker-input" data-target="#datetimepicker1" required id="id_date"></td>.
</tr>
当我在网页上提交表格时,我使用了以下格式
由于格式是一致的,我很困惑,到底是输入法出了问题,还是有更大的问题。
输入的格式并不完全相同。事实上,如果我们用 datetime
模块,我们得到。
>>> from datetime import datetime
>>> datetime.strptime('04/05/0001 6:07 PM', '%m/%d/%Y %H:%M')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib/python3.6/_strptime.py", line 365, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: PM
所以... PM
这里的部分没有解析,你可以用 %p
指令,所以。
>>> datetime.strptime('04/05/0001 6:07 PM', '%m/%d/%Y %H:%M %p')
datetime.datetime(1, 4, 5, 6, 7)
...input_formats
因此,应该是:
class DateForm(forms.Form):
date = forms.DateTimeField(
input_formats=['%m/%d/%Y %H:%M %p'],
widget=forms.DateTimeInput(attrs={
'class': 'form-control datetimepicker-input',
'data-target': '#datetimepicker1'
}))