Skip to main content
 首页 » 编程设计

python之Django 检查表单是否有效()

2024年09月07日37jackei

我正在尝试复制

if form.is_valid(): 

使用 django 表单向导。 (这个问题应该和 Sprite 没有关系)

我有这个代码:

class ContactWizard(SessionWizardView): 
 
def get_template_names(self): 
    return [TEMPLATES[self.steps.current]] 
 
def done(self, form_list, **kwargs): 
    if self.request.method == 'POST': 
        print(form_list) 
        process_form_data(form_list) 
    return HttpResponseRedirect('../home') 
 
def process_form_data(form_list): 
    if form.is_valid(): 
        form_data = [form.cleaned_data for form in form_list] 
 
        first_name = form_data[0]['first_name'] 
        last_name = form_data[0]['last_name'] 
        email = form_data[0]['email'] 
 
        fav_food = form_data[0]['fav_food'] 
        fav_drink = form_data[0]['fav_drink'] 
 
        user = User.objects.create_user(email) 
        user.first_name = first_name 
        user.last_name = last_name 
        user.email = email 
        user.save() 
 
        user_addon = UserAddon.objects.create(user=user,fav_food=fav_food,fav_drink=fav_drink) 
        user_addon.save() 
 
        return form_data 

如果我打印出 form_list 我会得到这个

odict_values([<UserAddonForm bound=True, valid=True, fields=(fav_food;fav_drink;first_name,last_name;email)>,ContactForm3 bound=True, valid=True, fields=(info1;info2;message)>]) 

如果我试着用

运行它
form.is_valid()  

我明白了

Exception Value: name 'form' is not defined 

我怎样才能得到 form.is_valid() 的等价物?

谢谢

请您参考如下方法:

您正在将 form_list 传递给函数 process_form_data,但要检查名称 form(通过 form.is_valid() ) 此时不存在。

假设 form_list 是可迭代的,您可以迭代它并按顺序处理表单:

def process_form_data(form_list): 
    for form in form_list: 
        if form.is_valid(): 
            form_data = form.cleaned_data 
            first_name = form_data[0]['first_name'] 
            last_name = form_data[0]['last_name']