Создание формы регистра с помощью Flask - AttributeError: у объекта 'ValueError' нет атрибута 'name' - PullRequest
0 голосов
/ 27 июня 2018

Я пытался заставить мою страницу регистрации работать в течение пары дней. Я думаю, что я близко, но теперь я получаю следующее сообщение об ошибке в моем терминале, когда я пытаюсь нажать кнопку регистрации со страницы входа в систему:

Файл "/home/ubuntu/workspace/pset7/finance/application.py", строка 175, в обработчике ошибок

return apology(e.name, e.code)

AttributeError: у объекта 'ValueError' нет атрибута 'name'

Вот мой код из строк, на которые указывает ошибка (я не писал их, им был предоставлен код распределения):

def errorhandler(e):
"""Handle error"""
return apology(e.name, e.code)

Любая помощь будет принята с благодарностью. Я включу свой код функции регистра на всякий случай, если это поможет:

@app.route("/register", methods=["GET", "POST"])
def register():
    """Register user"""
    # User reached route via POST (as by submitting a form via POST)
    if request.method == "POST":

        # Ensure username was submitted
        if not request.form.get("username"):
            return apology("must provide username", 403)

        # Ensure password was submitted
        elif not request.form.get("password"):
            return apology("must provide password", 403)

        # Ensure password == confirmation
        elif request.form.get("password") != request.form.get("confirmation"):
            return apology("password and confirmation do not match", 403)

        # Ensure username is not already taken
        rows = db.execute("SELECT * FROM users WHERE username = :username",
                          username=request.form.get("username"))
        if len(rows) == 1:
            return apology("username already taken. please choose another", 403)

        # Add new user to the database
        session["user_id"] = db.execute("INSERT INTO users(username, hash) VALUES(:username, :hash)", username=request.form.get("username"), \
        hash=generate_password_hash(request.form.get("password")))

        # Redirect user to home page
        return redirect("/")

Спасибо!

1 Ответ

0 голосов
/ 28 июня 2018

Я только что решил это! Я заметил это: ОШИБКА в приложении: Исключение в / зарегистрировать [GET]

Так что казалось, что ошибка должна быть связана со стороной [GET]. Я взглянул на функцию кода / входа в систему, и в нижней части ее блока было указано следующее выражение:

(я изменил login.html на register.html)

# User reached route via GET (as by clicking a link or via redirect)
else:
    return render_template("register.html")

Я думаю, проблема была в том, что я обрабатывал POST-запросы, а не GET-запросы. Этот последний оператор else гарантирует, что страница будет отображаться для кого-то, кто перешел по ссылке. Еще раз спасибо за помощь!

...