我正在编写一个web应用程序,你可以在登录(或注册)之前通过表单提出产品请求。这是一种“试一试”的模式来降低放弃率。当我们把注册放在第一位的时候——我们有太多的人放弃了这项服务,因为他们必须先注册一个账户。这样一来,我们就可以让人们在报名之前做出一些努力。在
无论如何,我很难让这个模式发挥作用。我使用的是flask登录扩展名。我有一个呈现产品请求表单的视图,如果用户未登录,则会重定向到登录视图:
@app.route('/customer/gift_request', methods=['GET', 'POST'])
# Note login is NOT required for this.
def gift_request():
form = GiftRequestForm()
error = None
if form.validate_on_submit():
if current_user.get_id():
new_gift_request = GiftRequest(
current_user.id,
form.giftee_name.data,
form.giftee_age.data,
int(form.giftee_sex.data),
form.event.data,
form.event_date.data,
float(form.budget.data))
try:
db.session.add(new_gift_request)
db.session.commit()
flash("You have successfully submitted a gift request! ",'success')
return redirect(url_for('customer_home'))
except:
error = "Error creating gift request"
else:
return redirect(url_for('login', next=request.url)
return render_template('customer_portal/gift_request.html', form=form, error=error)
我的登录视图如下:
^{pr2}$请注意,我的登录显示为登录页上的模式窗口。在任何情况下,我不知道如何在登录后保留我的礼品申请表数据。我该怎么传递?我尝试过很多东西——比如把它放在请求中——但这让我觉得很不舒服(而且可能不安全)。另外,在登录提交时,表单数据就消失了。它从来没有传递到登录模板,所以我想它只是消失了。我在网上搜索过,但似乎找不到一个模式来做这件事。在
另外,登录只是其中的一部分——如果填写礼物请求的人没有登录名,那么我想让他们到注册页面上创建一个帐户。但我想如果我弄清楚了-,我可以用同样的模式来扩展它。在
我想你可能需要一个疗程。它看起来像这样:
我用过很多次了,我从来没有遇到过问题。如果希望表单数据在没有会话的情况下挂起,则必须跟踪它并将其传递给每个后续模板。在
更新
重新读取代码后,如果当前用户未登录,则根本不会保存表单数据。很明显,这里的烧瓶有一点变化:
^{pr2}$相关问题 更多 >
编程相关推荐