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'的東西。如果你想獲得更多的幫助,儘管你應該用一個完整的代碼來發佈一個新的問題,你如何設置它。 –
好的。謝謝 –