自动保存WTForm的内容

时间:2014-07-17 03:25:18

标签: javascript jquery python python-3.x flask

我(坦率地说)有点脆弱的形式。因此,我希望它在每次输入数据字段时保存。但是,在表单完成并经过验证之前,我不想将它们作为用户保存到站点。

这就是我想象的包含

的javascript方面
$('input').blur(function() {
  $.post(endpoint, form);
});

然而,我目前对端点的看法是这样的:

@auth.route('/register', methods=['GET', 'POST'])
def register():
    """ register a new user using the form """
    form = RegistrationForm()
    if form.validate_on_submit():
        new_user = User(
            email=form.email.data.lower(),
            first_name=form.first_name.data.title(),
            last_name=form.last_name.data.title(),
            username=form.username.data.lower(),
            password=form.password.data
        )
        db.session.add(new_user)
        flash('successfully registered!', 'success')
        return redirect(url_for('auth.login'))
    return render_template('user/register.html', form=form)

这适用于注册用户,但如果他们重新访问而不将其作为用户,我如何只保存他们的表单数据供以后使用?

1 个答案:

答案 0 :(得分:1)

我认为您必须将每个会话存储到数据库中,您必须在会话和cookie通信时加载部分填充的表单数据。

恕我直言,当新用户来到应用程序时,将创建新会话,您必须将该会话存储到数据库中,如果用户开始填写表单,您必须更新数据以及会话变量,然后当相同时用户下次尝试访问时,需要从数据库加载相同的会话。必须从cookie输入中识别会话,如

使用sid

标识会话
sid = request.cookies.get(app.session_cookie_name)

接下来,您必须加载部分填充的表单数据以及该特定会话。

加载会话

response.set_cookie(app.session_cookie_name, session.sid,
                            expires=self.get_expiration_time(app, session),
                            httponly=True, domain=domain)

example code已由某位神为您完成:)

我假设您已经知道存储和检索表单数据。