使用Flask创建注册表单 - AttributeError:'ValueError'对象没有属性'name'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Flask创建注册表单 - AttributeError:'ValueError'对象没有属性'name'相关的知识,希望对你有一定的参考价值。
我一直试图让我的注册页面工作几天。我想我很接近,但是当我尝试从登录页面点击注册时,我在终端中收到以下错误消息:
在错误处理程序中输入文件“/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("/")
谢谢!
答案
我刚刚解决了!我注意到了这一点:app中的错误:/ 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语句确保为链接后的某个人呈现页面。再次感谢您的帮助!
以上是关于使用Flask创建注册表单 - AttributeError:'ValueError'对象没有属性'name'的主要内容,如果未能解决你的问题,请参考以下文章