在 Masonite 中验证表单

Validating a form in Masonite

我正在尝试使用 Masonite 中的验证器引擎来验证表单数据。每个验证器都独立工作,但是当我尝试将一堆验证器链接在一起时它不起作用。

       errors = request.validate(
            validate.when(
                validate.exists(['title', 'body', 'lat', 'lon'])
            ).then(
                validate.string(['title', 'body']),
                # regex to validate a float
                validate.regex(['lat', 'lon'], pattern='[+-]?(?=\d*[.eE])(?=\.?\d)\d*\.?\d*(?:[eE][+-]?\d+)?')
            ))
       if errors:
            return response.redirect('/create-post').with_errors(errors)

上面的验证器允许我提交一个空表单(它不应该,但它似乎没有执行 'validate.exists' 检查),但是如果我在每个表单字段中输入数据, 'validate.regex' 似乎对纬度和经度数据有效。

我不太确定我做错了什么?

但这确实有效。先用validate.required检查表格,如果没有错误,再用validate.regex检查。

errors = request.validate(
            validate.required(['title', 'body', 'lat', 'lon']))
        if not errors:
            errors = request.validate(
                validate.regex(['lat', 'lon'], pattern='[+-]?(?=\d*[.eE])(?=\.?\d)\d*\.?\d*(?:[eE][+-]?\d+)?'))