我有一个小的日志浏览器。它根据用户的输入检索并显示先前记录的列表。它不会更新任何内容。
代码非常简单,工作正常。这是简化版:
@app.route('/log', methods=['GET', 'POST'])
def log():
form = LogForm()
if form.validate_on_submit():
args = parse(form)
return render_template('log.html', form=form, log=getlog(*args))
return render_template('log.html', form=form)
然而它并不遵循post/redirect/get模式,我想要修复这个问题。
在post和get之间,我应该把已发布的数据(即args
)存储在哪里?什么是标准或推荐的方法?我应该设置一个cookie吗?我应该使用flask.session对象,在那里创建一个缓存?你能指点我正确的方向吗?大多数时候我都在写后端...
更新:
我正在发布生成的代码。
@app.route('/log', methods=['POST'])
def log_post():
form = LogForm()
if form.validate_on_submit():
session['logformdata'] = form.data
return redirect(url_for('log'))
# either flash errors here or display them in the template
return render_template('log.html', form=form)
@app.route('/log', methods=['GET'])
def log():
try:
formdata = session.pop('logformdata')
except KeyError:
return render_template('log.html', form=LogForm())
args = parse(formdata)
log = getlog(args)
return render_template('log.html', form=LogForm(data=formdata), log=log)