i am trying to redirect the user after logging in and signing up but the user is not redirected, what am i doing wrong? here is the code and the templates.
app.py
from flask import Flask, render_template, url_for, request, flash, redirect
from flask_wtf import FlaskForm
from wtforms import EmailField, SubmitField, StringField, PasswordField
from wtforms.validators import Length, DataRequired, Email, EqualTo
from email_validator import validate_email
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config["SECRET_KEY"] = "dev"
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///database/database.db"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
class Signup(FlaskForm):
username = StringField("username", validators=[DataRequired(), Length(min=5, max=20)])
name = StringField("name", validators=[DataRequired(), Length(min=3, max=20)])
surname = StringField("surname", validators=[DataRequired(), Length(min=3, max=20)])
email = EmailField("email", validators=[DataRequired(), Email(), Length(min=5, max=20)])
password = PasswordField("password", validators=[DataRequired(), Length(min=15, max=20)])
confirm_password = PasswordField("confirm password", validators=[DataRequired(), EqualTo("password")])
submit = SubmitField("Sign Up")
class Login(FlaskForm):
username_email = StringField("username or email", validators=[DataRequired(), Length(min=5, max=20)])
password = PasswordField("password", validators=[DataRequired(), Length(min=15, max=20)])
submit = SubmitField("Log In")
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String, nullable=False, unique=True)
name = db.Column(db.String, nullable=False)
surname = db.Column(db.String, nullable=False)
email = db.Column(db.String, nullable=False, unique=True)
password = db.Column(db.String, nullable=False, unique=True)
def __repr__(self):
return "{} - {} - {} - {} - {} - {}".format(self.id, self.username, self.name, self.username,
self.email, self.password)
@app.route("/")
def home():
return "Home"
@app.route("/login", methods=["POST", "GET"])
def login():
form = Login()
if request.method == "POST" and form.validate_on_submit():
return redirect(url_for("home"))
return render_template("login.html", form=form)
@app.route("/signup", methods=["POST", "GET"])
def sign():
form = Signup()
if request.form == "POST" and form.validate_on_submit():
return redirect(url_for("home"))
return render_template("signup", form=form)
@app.route("/private")
def private():
return render_template("private.html")
if __name__ == "__main__":
app.run(debug=True)
login.html
{% extends 'base.html' %} {% block head %}
<title>Login</title>
{% endblock head %} {% block body %}
<h1>LOG IN</h1>
<form class="form" action="{{ url_for('login') }}" method="post" novalidate>
{{ form.crfs_token }}
<div class="form-field">
{{ form.username_email.label }} {{ form.username_email }} {% if
form.username_email.errors %} {% for error in form.username_email.errors %}
<span class="text-danger">{{ error }}</span>
{% endfor %} {% endif %}
</div>
<div class="form-field">
{{ form.password.label }} {{ form.password }} {% if form.password.errors %}
{% for error in form.password.errors %}
<span class="text-danger">{{ error }}</span>
{% endfor %} {% endif %}
</div>
<div class="form-field">{{ form.submit }}</div>
</form>
{% endblock body %}
signup.html
{% extends 'base.html' %} {% block head %}
<title>Signup</title>
{% endblock head %} {% block body %}
<h1>SIGN UP</h1>
<form class="form" action="{{ url_for('signup') }}" method="post" novalidate>
{{ form.crfs_token }}
<div class="form-field">
{{ form.username.label }} {{ form.username }} {% if form.username.errors %}
{% for error in form.username.errors %}
<span class="text-danger">{{ error }}</span>
{% endfor %} {% endif %}
</div>
<div class="form-field">
{{ form.name.label }} {{ form.name }} {% if form.name.errors %} {% for error
in form.name.errors %}
<span class="text-danger">{{ error }}</span>
{% endfor %} {% endif %}
</div>
<div class="form-field">
{{ form.surname.label }} {{ form.surname }} {% if form.surname.errors %} {%
for error in form.surname.errors %}
<span class="text-danger">{{ error }}</span>
{% endfor %} {% endif %}
</div>
<div class="form-field">
{{ form.email.label }} {{ form.email }} {% if form.email.errors %} {% for
error in form.email.errors %}
<span class="text-danger">{{ error }}</span>
{% endfor %} {% endif %}
</div>
<div class="form-field">
{{ form.password.label }} {{ form.password }} {% if form.password.errors %}
{% for error in form.password.errors %}
<span class="text-danger">{{ error }}</span>
{% endfor %} {% endif %}
</div>
<div class="form-field">
{{ form.confirm_password.label }} {{ form.confirm_password }} {% if
form.confirm_password.errors %} {% for error in form.confirm_password.errors
%}
<span class="text-danger">{{ error }}</span>
{% endfor %} {% endif %}
</div>
<div class="form-field">{{ form.submit }}</div>
</form>
{% endblock body %}