我試圖製作一個簡單的Web應用程序,我可以將數據從客戶端上傳到數據庫,然後將其發回。除了用戶認證和會話處理之外,我已經完成了一切。我是Flask-WTForms(和燒瓶tbh)的新手,我的示例代碼如下。我的問題是,當我嘗試時,我無法通過我所做的WTForm檢索我的表單數據。我只能從request.form獲取數據。然而這並不理想,因爲我正在嘗試使用Flask-login。Flask-WTForm組合正在接收數據(request.form),但沒有保存在RegistrationForm()中
@login_manager.user_loader
def load_user(username):
USERS = mongo.db.users
u = USERS.find_one({"username": username})
if not u:
return None
return User(u['username'])
@app.route('/register', methods=['GET', 'POST'])
def register():
USERS = mongo.db.users
myform = RegistrationForm()
if myform.validate_on_submit():
USERS.insert({"Username": myform.username.data, "Password":
myform.password.data})
return "REGISTERED"
print(request.form["Username"])
return "ERROR: Your request failed"
當我嘗試通過WTForms獲取數據時,它不起作用並失敗,但request.form包含數據。我知道flask_wtf不需要它,但我也試過:
myform = RegistrationForm(request.form)
爲了完整起見,下面是我的表單文件。
from wtforms import StringField, PasswordField, validators
from wtforms.validators import DataRequired
from flask_wtf import FlaskForm
WTF_CSRF_ENABLED = False
class RegistrationForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
注意,我知道Sql對於這個項目來說比較容易,但是我因爲其他原因使用了mongo。
當你說「[它]不是理想的(使用請求)時,你能詳細說明你的意思嗎?窗體],因爲我試圖使用Flask-login「? –
使用WTForm窗體(RegistrationForm())讓我進行身份驗證並以更容易的方式保存用戶 –