Django日历表单无效输入

问题描述 投票:1回答:1

目前,我在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>

当我在网页上提交表格时,我使用了以下格式

enter image description here

由于格式是一致的,我很困惑,到底是输入法出了问题,还是有更大的问题。

html django
1个回答
1
投票

输入的格式并不完全相同。事实上,如果我们用 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'
     }))
© www.soinside.com 2019 - 2024. All rights reserved.