使用Flask创建注册表单-AttributeError:“ ValueError”对象没有属性“ name”

时间:2018-06-27 10:00:10

标签: python flask web-applications attributeerror

我一直试图让我的注册页面工作几天。我想我已经接近了,但是当我尝试从登录页面单击注册时,我在终端中收到以下错误消息:

在错误处理程序中的文件“ /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 :(得分:2)

我刚刚解决了!我注意到了这一点:应用程序出错:/ register [GET]

上的异常

因此,似乎错误必须与事物的[GET]方面有关。我看了一下代码的/ login函数,它的块底部有以下else语句:

(我将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语句可确保将为链接后的某个人呈现页面。再次感谢您的帮助!