Вот мой код:
@app.route("/login", methods=["GET", "POST"])
def login():
session.clear()
if request.method == "GET":
return render_template("login.html")
if request.method == "POST":
rows = User.query.filter_by(username=request.form.get("username")).first()
if rows is None or not check_password_hash(rows.password, request.form.get("password")):
flash('incorrect username or password')
return render_template("login.html")
else:
session["user_id"] = rows.user_id
return render_template("profile.html")
Вот мой терминал:
127.0.0.1 - - [10/Apr/2020 21:59:00] "GET /login?username=nico&password=somepassword HTTP/1.1" 200 -
127.0.0.1 - - [10/Apr/2020 21:59:07] "GET /login?username=nico&password=somepassword HTTP/1.1" 200 -
Я попытался отладить свой код, и я пришел к выводу, что программа как-то не обрабатывает :
if request.method == "POST":
Так что я не могу войти в систему. Мой html в порядке, я использовал тот же самый для моей функции регистрации, и она работает отлично. Каким-то образом, когда я нажимаю кнопку «Войти» на моей веб-странице, flask doest распознает метод запроса POST и возвращает только «GET».
Это мой логин html форма:
<form>
<div class="form-group input-group">
<div class="input-group-prepend">
<span class="input-group-text"> <i class="fa fa-user"></i> </span>
</div>
<input name="username" class="form-control" placeholder="Nombre de usuario" type="text" minlength="3" maxlength="20" required oninvalid="this.setCustomValidity('El nombre de usuario debe tener entre 3 y 20 caracteres.')"
oninput="this.setCustomValidity('')">
</div> <!-- form-group// -->
<div class="form-group input-group">
<div class="input-group-prepend">
</div>
</div> <!-- form-group end.// -->
<div class="form-group input-group">
<div class="input-group-prepend">
<span class="input-group-text"> <i class="fa fa-lock"></i> </span>
</div>
<input name="password" class="form-control" minlength="5" placeholder="Contraseña" type="password" required oninvalid="this.setCustomValidity('La contraseña debe tener 6 caracteres como mínimo')"
oninput="this.setCustomValidity('')">
</div> <!-- form-group// -->
<div class="form-group">
<button type="submit" class="btn btn-primary btn-block"> Iniciar sesión </button>
</div> <!-- form-group// -->
<p class="text-center">No tienes una cuenta? <a href="/register">Regístrate</a> </p>
</form>