Python表单自定义验证无法从表单获取数据,是非

2024-10-01 07:36:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我的一个窗体字段当前有问题。用户必须选择或键入有效的类别(这是预定义的)。为了检查输入是否有效,我创建了一个自定义验证:

class CategoryAddTextField(TextField):
    def process_formdata(self, valuelist):
        if len(valuelist[0].lower().strip()) > 0:
            if valuelist[0].lower().strip() not in cat_list:
                raise ValidationError("Diese Branche existiert nicht")

cat_list中,我有所有有效选项(3300~)cat_listlist。你知道吗

输入字段如下:

category_add = CategoryAddTextField(u'Kategorie wählen')

如果输入错误,则一切正常,表单不会提交并显示正确的错误,但如果输入正确,则不会存储表单数据。我测试过了,结果是None

如果我使用print form.category_add.data,它告诉我它是None

如果我使用普通的TextField,它可以正常工作。你知道吗


Tags: 用户noneadd表单if错误窗体lower
1条回答
网友
1楼 · 发布于 2024-10-01 07:36:32

好吧,看来这两者之间有区别:

form.category_add.data

第一个版本变成None,而第二个版本变成empty string

request.form["category_add"]

使用第二个版本修复了我的问题:

class CategoryAddTextField(TextField):
    def process_formdata(self, valuelist):
        if valuelist[0].lower().strip() == "":
            raise ValidationError("Suchen Sie eine Branche aus")
        if len(valuelist[0].lower().strip()) > 0:
            if valuelist[0].lower().strip() not in cat_list:
                raise ValidationError("Diese Branche existiert nicht")

我还添加了以下内容以确保输入数据:

    if valuelist[0].lower().strip() == "":
        raise ValidationError("Suchen Sie eine Branche aus")

在主.py用request.form["category_add"].lower().strip()添加到数据库:

the_category =  CompanyCategory(category_info=form.category_info.data, category_id_name = request.form["category_add"].lower().strip(), company_id=the_company.id)

相关问题 更多 >