如何相互验证wtforms字段? - python

我在表单中有三个相同的SelectField输入,每个输入具有相同的选项集。我不能使用多项选择。

我要确保用户为这三个字段选择三个不同的选择。

在自定义验证中,您似乎一次只能引用一个字段,而不能将此字段的值与其他字段进行比较。我怎样才能做到这一点?谢谢!

参考方案

您可以在validate中覆盖Form ...

class MyForm(Form):
    select1 = SelectField('Select 1', ...)
    select2 = SelectField('Select 2', ...)
    select3 = SelectField('Select 3', ...)
    def validate(self):
        if not Form.validate(self):
            return False
        result = True
        seen = set()
        for field in [self.select1, self.select2, self.select3]:
            if field.data in seen:
                field.errors.append('Please select three distinct choices.')
                result = False
            else:
                seen.add(field.data)
        return result

在选择上设置默认设置会删除为填充表单而传入的设置 - python

此代码可以单独正常工作。我的意思是,当我设置默认的tag并调用process()时,应填充表格的所有其他数据均已删除。在这种情况下,默认设置为ok,但其他字段为空。form = ReviewForm(**populate_form) form.tags.default = '1' form.process() 因此,似乎process清除…

python flask如何从URL获取路由ID - python

我正在用烧瓶。我有一个网址,例如:http://example.com/page/page_id我想知道如何从路线中的网址获取page_id部分。我希望我可以设计出一些方法,例如:@route('/page/page_id') def page(page_id): pageid = page_id 参考方案 这非常简单-在尖括号之间传递p…

WTForms Flask(wtf_flask)验证程序如何为RadioField包括“必需”属性 - python

我基本上在寻找的是WTForms的InputRequired()的RadioField等效验证器。我的意思是,当您尝试提交表单而不在具有InputRequired()验证器的StringField字段中输入任何文本时,用户会在文本字段上方看到提示,提示是"Please fill out this field"。我希望用户必须选择male或…

Flask Cors无法运作 - python

我正在尝试在Flask应用程序中启用CORS,但无论我把来源如何,似乎总是可以从浏览器访问URL。我不知道我做错了什么。这是我的代码from flask import Flask, jsonify from flask_cors import CORS app = Flask(__name__) CORS(app, resources={r'/*&…

flask:异常后停止服务器 - python

我想在发生未处理的异常时立即停止我的Flask服务器。这是一个例子:from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): 1/0 # argh, exception return 'Hello World!' i…