Django DateField表单在cleaned_data中生成None [英] Django DateField form generates None in cleaned_data

查看:47
本文介绍了Django DateField表单在cleaned_data中生成None的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在django中从DateField的表单中选择日期并单击提交按钮后,is_valid()成功,但是cleaned_data显示None.有人知道这是什么问题吗?谢谢

forms.py

  class DateForm(forms.Form):day_from = forms.DateField(label =u'Začiatokobdobia',input_formats = ['%d/%m/%Y'],required = False,widget = forms.DateInput(format ='%d/%m/%Y'))day_to = forms.DateField(label = u'Koniec obdobia',input_formats = ['%d/%m/%Y'],required = False,widget = forms.DateInput(format ='%d/%m/%Y')) 

views.py

  def dp_list(request):如果request.method =="POST":form_date = DateForm(request.POST)如果form_date.is_valid():date_from = form_date.cleaned_data ['day_from']date_to = form_date.cleaned_data ['day_to']打印(date_from,date_to,type(date_from),type(date_to))打印(form_date.cleaned_data) 

datelist.html

 < form action =" method ="post">{%csrf_token%}{{表格|materializecss:"s4"}}< span class ="align-bottom">< input class ="btn primary-btn pink" type ="submit" value ="Zobraz"></span></form> 

在控制台中打印输出:

 >##无无类'NoneType'类'NoneType'>## {'day_from':无,'day_to':无} 

解决方案

发生这种情况是因为未清除其中一个字段.您可以通过执行 else print(form_date.cleaned_data)来确认哪个字段,而 print 的字段应该少一个.

After selecting dates from DateField's form in django and hitting submit button, is_valid() succeeds, but cleaned_data shows None. Does anyone know what is the issue? Thanks

forms.py

class DateForm(forms.Form):
    day_from = forms.DateField(label=u'Začiatok obdobia', input_formats=['%d/%m/%Y'], 
        required=False, widget=forms.DateInput(format='%d/%m/%Y'))
    day_to = forms.DateField(label=u'Koniec obdobia', input_formats=['%d/%m/%Y'], 
        required=False, widget=forms.DateInput(format='%d/%m/%Y'))

views.py

def dp_list(request):
if request.method == "POST":
    form_date = DateForm(request.POST)
    if form_date.is_valid():
        date_from = form_date.cleaned_data['day_from']
        date_to = form_date.cleaned_data['day_to']
        print(date_from, date_to, type(date_from), type(date_to))
        print(form_date.cleaned_data)

datelist.html

<form action="" method="post">
     {% csrf_token %}
     {{ form | materializecss:"s4"}}
     <span class="align-bottom">
         <input class="btn primary-btn pink" type="submit" value="Zobraz">
     </span>
</form>

Output of prints in console:

> ## None None class 'NoneType' class 'NoneType'
> ## {'day_from': None, 'day_to': None}

解决方案

This happens because one of the fields isn't cleaned. You can confirm which field by doing an else and print(form_date.cleaned_data), the print's should have one less field.

这篇关于Django DateField表单在cleaned_data中生成None的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆