0
我正在做一些与烧瓶的应用程序,我现在正在注册。在这种情况下,我正在使用SQL而不是SQLAlchemy(只是为了更多地使用SQL) 也使用Flask-WTF来处理表单。烧瓶 - 注册新用户不起作用 - 错误的请求
我成功创建数据库表:
class RegisterForm(Form):
name = StringField(
'Username',
validators=[DataRequired(), Length(min=4, max=25)]
)
email = StringField(
'Email',
validators=[DataRequired(), Length(min=6, max=40)]
)
password = PasswordField(
'Password',
validators=[DataRequired(), Length(min=6, max=40)])
confirm = PasswordField(
'Repeat Password',
validators=[DataRequired(), EqualTo('password', message='Passwords must match')]
)
在我的views.py我旁边,登记要求:
@app.route("/register/", methods=["GET", "POST"])
def register():
form = RegisterForm(request.form)
if request.method == "POST" and form.validate_on_submit():
name = request.form["name"]
email = request.form["email"]
password = request.form["password"]
g.db.connect_db()
g.db.execute("INSERT INTO users(name, email, password) VALUES (?,?,?)", (name, email, password))
g.db.commit()
g.db.close()
return render_template("register.html", form=form)
我的简单形式:
<form action="/" method="post">
{{ form.csrf_token }}
<div class="form-group">
<label for="usernameInput">Username</label>
<input type="text" name="name" class="form-control" id="usernameInput">
</div>
<div class="form-group">
<label for="emailInput">Email</label>
<input type="email" name="email" class="form-control" id="emailInput">
</div>
<div class="form-group">
<label for="passwordInput">Password</label>
<input type="password" name="password" class="form-control" id="passwordInput">
</div>
<div class="form-group">
<label for="confirmInput">Confirm password</label>
<input type="password" name="confirm" class="form-control" id="confirmInput">
</div>
<button type="submit" class="btn btn-default btn-block">Register</button>
{% if error %}
<p class="error"><strong>Error:</strong> {{error}} </p>
{% endif %}
</form>
现在我有一直在尝试,更改和修复2天,并找不到问题。当我输入所有数据并点击注册时,我会收到400个错误的请求。 也许它有点傻,我只是看不到它。
如果有人可以帮忙,我会appriciate。 如果需要更多信息或代码,请告诉我。
感谢
Okey,我现在明白了,谢谢:) 您知道这意味着什么吗? AttributeError:'_AppCtxGlobals'对象没有属性'db'? –
推测这意味着你的'g'对象,不管它是什么,都没有叫做'db'的东西。如果你想获得更多的帮助,尽管你应该用一个完整的代码来发布一个新的问题,你如何设置它。 –
好的。谢谢 –