Flask-WTF
WTF stands for WT Forms which is intended to provide the interactive user interface for the user. The WTF is a built-in module of the flask which provides an alternative way of designing forms in the flask web applications.
Why WTF Useful?
WTF is useful due to the following factors.
The form elements are sent along with the request object from the client side to the server side. Server-Side script needs to recreate the form elements since there is no direct mapping between the client side form elements and the variables to be used at the server side.
There is no way to render the HTML form data at real time.
The WT Forms is a flexible, form rendering, and validation library used to provide the user interface.
#app.py from flask import Flask, render_template, request, flash from forms import ContactForm app = Flask(__name__) app.secret_key = 'cairocoders-ednalan-456895' @app.route('/contact', methods = ['GET', 'POST']) def contact(): form = ContactForm() if form.validate() == False: flash('All fields are required.') return render_template('contact.html', form = form) @app.route('/success',methods = ['GET','POST']) def success(): return render_template("success.html") if __name__ == '__main__': app.run(debug=True)
#forms.py from flask_wtf import Form from wtforms import TextField, IntegerField, TextAreaField, SubmitField, RadioField, SelectField from wtforms import validators, ValidationError class ContactForm(Form): name = TextField("Candidate Name ",[validators.Required("Please enter your name.")]) Gender = RadioField('Gender', choices = [('M','Male'),('F','Female')]) Address = TextAreaField("Address") email = TextField("Email",[validators.Required("Please enter your email address."), validators.Email("Please enter your email address.")]) Age = IntegerField("Age") language = SelectField('Programming Languages', choices = [('java', 'Java'),('py', 'Python')]) submit = SubmitField("Submit")
<!doctype html> <html> <body> <h2 style = "text-align: center;">Registration Form</h2> {% for message in form.name.errors %} <div>{{ message }}</div> {% endfor %} {% for message in form.email.errors %} <div>{{ message }}</div> {% endfor %} <form action = "http://127.0.0.1:5000/success" method = "POST"> {{ form.hidden_tag() }} <div style = "font-size:18px;" font-weight:bold; margin-left:150px;> {{ form.name.label }}<br> {{ form.name }} <br> {{ form.Gender.label }} {{ form.Gender }} {{ form.Address.label }}<br> {{ form.Address }} <br> {{ form.email.label }}<br> {{ form.email }} <br> {{ form.Age.label }}<br> {{ form.Age }} <br> {{ form.language.label}}<br><br> {{ form.language }} <br><br> {{ form.submit }} </div> </fieldset> </form> </body> </html>