Skip to main content
 首页 » 编程设计

python之django form.is_valid() 总是返回 false

2024年08月27日26cyq1162

在我看来,My is valid 函数似乎总是返回 false,即使帖子似乎发送了正确的数据(我认为)。我是 django 和 python 的新手,我正在使用 Django Docs 作为指南。我也在尝试使用 Dajax 中的 Django 表单示例来实现我的表单(我已经在同一个项目中成功安装并使用了 Dajax)。我的其他 Dajax 方法是 get 方法,我确信它们不会干扰我的帖子。

每次我点击帖子时,都会出现“表单无效”错误警报,我不确定为什么它不进入 if block 。

我在这里阅读了类似的问题,并仔细检查了我能想到的所有内容。如果有人可以帮助指出问题所在,我将不胜感激。我在下面粘贴所需的代码。

表单.py

class BedSelectForm(forms.Form): 
Branch = forms.ModelChoiceField( 
    label = u'Branch', 
    queryset = Result.objects.values_list('branch', flat =True).distinct(), 
    empty_label = 'Not Specified', 
    widget = forms.Select(attrs = {'onchange' : "Dajaxice.modmap.updatecomboE(Dajax.process, {'optionB':this.value})"}) 
    ) 
Env = forms.ModelChoiceField( 
    label = u'Environment', 
    queryset = Result.objects.values_list('environment', flat =True).distinct(), 
    empty_label = 'Not Specified', 
    widget = forms.Select(attrs = {'onchange' : "Dajaxice.modmap.updatecomboD(Dajax.process, {'optionE':this.value})"}) 
    ) 
Disc = forms.ModelChoiceField( 
    label = u'Discipline', 
    queryset = Result.objects.values_list('discipline', flat =True).distinct(), 
    empty_label = 'Not Specified' 
 
    ) 

template.html

<form action="" method="post" id = "select_form"> 
        <div style = "color :white" class="field_wrapper"> 
             {{ form.as_p }} 
        </div>         
        <input type="button" value="Display Table" onclick="send_form();"/> 
</form> 
 
<script type="text/javascript"> 
    function send_form(){ 
        Dajaxice.modmap.dispTable(Dajax.process,{'form':$('#select_form').serialize(true)}); 
    } 
 </script> 

ajax.py

@dajaxice_register 
def dispTable(request, form): 
    dajax = Dajax() 
    form = BedSelectForm(deserialize_form(form)) 
 
    if form.is_valid(): 
        dajax.remove_css_class('#select_form input', 'error') 
        dajax.alert("Form is_valid(), your username is: %s" % form.cleaned_data.get('Branch')) 
    else: 
        dajax.remove_css_class('#select_form input', 'error') 
        for error in form.errors: 
            dajax.add_css_class('#id_%s' % error, 'error') 
        dajax.alert("Form is_notvalid()") 
 
    return dajax.json() 

这是我的帖子的样子..

argv    {"form":"Branch=Master&Env=ProdCoursera&Disc=ChemistryMOOC"} 

请您参考如下方法:

尝试将 {{ form.non_field_errors }} 添加到您的模板中。这将向您显示与字段无关的错误。

此外,如果可以的话,为了调试,请执行此操作而不是 {{ form.as_p }}

{% for field in form.fields %} 
    <div>{{ field }}</div> 
    {% if field.errors %} 
            <div class="alert alert-danger"> 
                {{ field.errors }} 
            </div> 
    {% endif %} 
{% endfor %} 

查看是否在 POSTing 上显示一些错误。