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.
from flask_wtf import Form
from wtforms.fields.html5 import URLField
from wtforms.validators import InputRequired
class MyForm(Form):
youtube_href = URLField(validators=[InputRequired()])
form = MyForm()
print(form.youtube_href(required=form.youtube_href.flags.required))
# <input id="youtube_href" name="youtube_href" required type="url" value="">
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…