0
votes

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 %}
Are your Forms validating? - NivisPluma