簡體   English   中英

自動保存WTForm的內容

[英]auto-saving the contents of a WTForm

我正在(很坦白)有些微不足道的形式。 因此,我希望每次他們向數據字段中輸入內容時保存它。 但是,在表單完成並通過驗證之前,我不希望將它們另存為網站用戶。

這就是我想像的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)

這樣可以很好地注冊用戶,但是如果他們重新訪問而又不使其成為用戶,那么我如何簡單地保存其表單數據以供以后使用?

我認為您必須將每個會話存儲到數據庫中,並且必須在會話和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)

示例代碼已經由一些上帝為您完成了:)

我認為您已經知道存儲和檢索表單數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM