我有一个烧瓶网页,其中包括几个情态。这些情态动词包括形式。 例如,一个模态,包括一个用于更改用户密码的表单。另一个模式包括一个用于添加新用户的表单。等等
我还有几个函数,可以处理从表单中获取的数据并更新数据库。在
我可以用一个表单完成,就像我使用登录表单一样:
def post(self):
if 'logout' in flask.request.form:
flask.session.pop('username', None)
flask.flash("You've been succsessfuly logged out!")
return flask.redirect(flask.url_for('login'))
required = ['username', 'passwd']
for r in required:
if r not in flask.request.form:
flask.flash("Error: {0} is required.".format(r))
return flask.redirect(flask.url_for('login'))
username = flask.request.form['username']
passwd = flask.request.form['passwd']
if username in users and users[username] == passwd:
flask.session['username'] = username
flask.flash("Login Succsessful!")
userID = database().getID(username)
flask.session['userID'] = userID
flask.session['userEmail'] = database().getEmail(userID)
flask.session['mNumber'] = database().getmNumber(userID)
return flask.redirect(flask.url_for('index'))
else:
flask.flash("Username doesn't exist or incorrect password")
return flask.redirect(flask.url_for('login'))
但这里只有两个变量,用户名和密码。两者都是必需的,我知道输入的只是那些变量。在
在带有modals的页面上,如果用户填写了“Change-Mail”表单,那么唯一的输入将是电子邮件地址。如果用户填写“更改密码”表格。唯一的输入将是密码,而不是电子邮件。在
我现在的问题是,如何在flask应用程序中确定用户填写的表单,以便相应地处理数据?在
为了区分用户发送给您的表单,可以引入一个字段。您可以将同名字段添加到所有需要的表单中,将其命名为“target”或“form”,并将表单名称存储在其中。字段应呈现为隐藏的输入元素。然后在flask代码中使用if/elif/else来读取输入值并决定它是哪种形式。在
还有更干净的解决方案:使用WTForm或Django表单。它们以不同的方式为每个输入名称添加表单前缀,这样就不会再有问题了,发送了哪个表单,谁需要处理数据。你为什么不用一个呢?他们还有很多额外的好处。在
为了解释第一个解决方案,下面是引导示例库中的示例表单:
您可以做的是将新的隐藏字段添加到表单中:
<input type='hidden' name='target' value='singin'>
用于登录表单。{handler>你可以在这个符号框中读到。对于页面上其他类型的表单,依此类推相关问题 更多 >
编程相关推荐