не хочет срабатывать redirect на нужную страницу после авторизации пользователя Flask

вот функция входа, нету никаких ошибок, все срабатывает, но после корректно введенных логина и пароля, пользователя не перекидывает на нужную страницу

# функция входа
@app.route('/sign_in', methods=('POST', 'GET'))
def sign_in():
    login = request.form.get('email')
    password = request.form.get('psw')

    if login and password:
        user = Users.query.filter_by(email=login).first()
        if check_password_hash(user.psw, password):
            login_user(user)

            next_page = request.args.get('index')
            return redirect(next_page) 
        else:
            flash('Проверьте логин или пароль')
    else:
        flash('Пожалуйста авторизуйтесь')
    return render_template("sign_in.html")

возможно я что-то напутал с именами формы и БД поэтому их прилагаю:

    <form action="/sign_in" method="get" class="form">
        {% with messages = get_flashed_messages() %}
            {% if messages %}
                    {% for message in messages %}
                    <h3>{{ message }}</h3>
                    {% endfor %}
            {% endif %}
        {% endwith %}
        <div class="circle"></div>
            <div class="register-form-container">
                <h1 class="form-title">Войти</h1>
                <div class="form-fields">
                    <p><label>Email: </label> <input type="text" name="email" value="" requied />
                </div>
                <div class="form-fields">
                    <p><label>Пароль: </label> <input type="password" name="psw" value="" requied />
                </div>
                <div class="form-fields">
                    <p><input type="submit" value="Войти" />
                </div>
                <div class="form-fields">
                    <a type="submit" href="/registration"  >Регистрация</a>
                </div>
            </div>
    </form>

БД:

class Users(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(50), unique=True, nullable=False)
    psw = db.Column(db.String(500), nullable=False)
    date = db.Column(db.DateTime, default=datetime.utcnow)

    def __repr__(self):
        return f"<users {self.id}>"

помогите пожалуйста, уже ничего не понимаю !!!


Ответы (1 шт):

Автор решения: mrEvgenX

Ничего вообще не происходит, потому что условие с проверкой email и password не срабатывает. Остается понять, почему так может быть.

Вы отправляете форму методом GET, но в коде пишете request.form. А в это свойство что-то попадает лишь тогда, когда метод запроса либо POST, либо PUT. В противном случае там пусто.

А get с несуществующим в словаре ключом - результат по-умолчанию None.

Наверное, лучше заменить на request.args.

→ Ссылка