这里是烧瓶的初学者,我找不到哪里出了问题。我被路由到(/register.html(而不是(/register(,所以我知道这是我在某个地方犯的错误,但对我来说一切都很好,一双新的眼睛帮助了我。
添加这个是因为stackoverflow认为我的问题主要是代码,并希望我添加更多细节,但我认为我的问得足够清楚,所以请忽略这一部分。
@app.route("/register", methods=["POST", "GET"])
def register():
# User reached route via POST (as by submitting a form via POST)
if request.method == "POST":
# Get username and password from form
username_submitted = request.form.get("username")
password_submitted = request.form.get("pasword")
# Query database for user
user = users.query.filter_by(username=username_submitted).first()
# Ensure a username was submitted
if not username_submitted or password_submitted:
flash("must provide username and password", category="error")
return redirect("/register")
# Ensure the username doesn't exist
elif len(user) != 0:
flash("username alredy exists", category="error")
return redirect("/register")
else:
# Hash password
hash = generate_password_hash(password_submitted)
# Insert new user into database
new_user = users(username=username_submitted, password=hash)
try:
db.session.add(new_user)
db.session.commit()
# Redirect user to homepage
return redirect("/")
except:
return "error signing you up"
# User reached route via GET (as by clicking a link or redirect)
else:
return render_template("register.html")
这是我的登记表:
{% extends 'layout.html' %}
{% block title %}
Sign up
{% endblock %}
{% block main %}
<form action="/register" method="post">
<div class="form-container">
<div class="form">
<div class="username">
<input type="text" name="username" placeholder="Username" id="username" autofocus/>
</div>
<div class="password">
<input type="password" name="password" placeholder="Password" id="password"/>
</div>
</div>
<input type="submit" name="register" id="register" class="btn" value="Sign up"/>
</div>
</form>
{% endblock %}
我几天前就解决了这个问题问题是链接到登录和注册页面的锚标签上的href看起来像这样:
<a href='login.html'>Login</a>
而不是:
<a href='login'>Login</a>