As of WTForms 2.2 (June 2nd, 2018), fields now render the ​​required​​ attribute if they have a validator that sets the ​​required​​ flag, such as ​​DataRequired​​ and ​​InputRequired​​. If for some reason you don't want to render the attribute, you can pass ​​required=False​​. Or if you want to disable all browser validation, you can set the ​​novalidate​​ attribute in the ​​form​​ tag. In general you should prefer to leave browser validation enabled, because it prevents a request/response for simple validation, which is desirable.


You are passing a positional argument after keyword arguments, which is a syntax error. Instead, pass ​​required=True​​, which will set a bare attribute on the tag. Check the flags on a field to see if a ​​Required​​ validator was set: ​​field.flags.required​​ is a boolean. Create a ​​URLField​​ rather than passing the type manually.