Guest User

Untitled

a guest
Oct 31st, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. # form.py
  2. # Flask-WTF Validation example in PyLadies TW Newsletter, October, 2017
  3.  
  4. from flask import Flask, render_template, session, redirect, url_for
  5. from flask_bootstrap import Bootstrap
  6. from flask_wtf import FlaskForm
  7. from flask_wtf.recaptcha import RecaptchaField
  8. from wtforms import StringField, PasswordField, BooleanField, IntegerField, FloatField, DateField, SelectField, SubmitField
  9. from wtforms.validators import Required, InputRequired, DataRequired, Optional, Length, Email, URL,NumberRange, EqualTo, Regexp
  10.  
  11. app = Flask(__name__)
  12. app.config["SECRET_KEY"] = "hard to guess string" # Important for CSRF token
  13. app.config['RECAPTCHA_PUBLIC_KEY'] = '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI'
  14. app.config['RECAPTCHA_PRIVATE_KEY'] = '6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe'
  15. bootstrap = Bootstrap(app)
  16.  
  17. class RegisterForm(FlaskForm):
  18. username = StringField("Username", validators=[InputRequired(), Length(min=4,max=20)])
  19. password = PasswordField("Password", validators=[InputRequired(), Length(min=6,max=10)])
  20. confirm = PasswordField("Repeat Password", validators=[
  21. InputRequired(),
  22. Length(min=6,max=10),
  23. EqualTo('password', "Passwrod must match")])
  24. email = StringField("Email",validators=[InputRequired(),Email()])
  25. url = StringField("Your Website",validators=[Optional(),URL()])
  26. age = IntegerField("How old are you?", validators=[
  27. InputRequired(),
  28. DataRequired("Please enter integer")])
  29. hour = FloatField("How many hours do you sleep?", validators=[
  30. Optional(),
  31. NumberRange(0, 24, "The hours should be between %(min)s and %(max)s")])
  32. mobile = StringField("Mobile Phone Number", validators=[
  33. InputRequired(),
  34. Regexp("^[0][9][0-9]{8}$", message="Invalid Taiwan Mobile Phone number")])
  35. date = DateField("Start Date, ex: 2017/10/28", format='%Y/%m/%d')
  36. language = SelectField('Programming Language', choices=[('cpp', 'C++'), ('py', 'Python'), ('text', 'Plain Text')])
  37. recaptcha = RecaptchaField()
  38. submit = SubmitField("Submit")
  39.  
  40.  
  41. @app.route("/", methods=["GET", "POST"])
  42. def index():
  43. form = RegisterForm()
  44. formData = {
  45. 'username': None,
  46. 'password': None,
  47. 'email': None,
  48. 'url': None,
  49. 'age': None,
  50. 'hour': None,
  51. 'mobile': None,
  52. 'date': None,
  53. 'language': None
  54. }
  55. if form.validate_on_submit():
  56. formData = {
  57. 'username': form.username.data,
  58. 'password': form.password.data,
  59. 'email': form.email.data,
  60. 'url': form.url.data,
  61. 'age': form.age.data,
  62. 'hour': form.hour.data,
  63. 'mobile': form.mobile.data,
  64. 'date': form.date.data,
  65. 'language': form.language.data
  66. }
  67. session["formData"] = formData
  68. return redirect(url_for("index"))
  69. return render_template("index.html", form=form, formData=session.get("formData"))
  70.  
  71.  
  72. if __name__ == "__main__":
  73. app.run(debug=True)
Add Comment
Please, Sign In to add comment