【问题标题】:Django check if Form is_valid()Django 检查 Form is_valid()
【发布时间】:2018-06-09 07:06:09
【问题描述】:

我正在尝试复制

if form.is_valid():

使用 django 表单向导。 (这个问题应该和向导无关)

我有这个代码:

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() 等效的功能?

谢谢

【问题讨论】:

    标签: python django forms validation


    【解决方案1】:

    您将 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']
    

    【讨论】:

    • 非常感谢!对于 first_name、last_name 等,是否应该在 form_data = form.cleaned_data 下缩进(如在 if 下)?还是应该在for下?
    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2018-01-22
    • 1970-01-01
    • 2011-07-02
    • 2012-06-19
    相关资源
    最近更新 更多