我正在尝试构建一个应用程序(使用Flask),它基本上采用一种形式,向用户发送预览的表单内容,并在用户感觉良好时发布内容。如果用户拒绝预览,她应该可以返回并编辑表单,其中包含原始数据。
基本上结构是
@app.route('/edit')
def edit():
...
#return rendered page for form inputting
#the form action triggers preview()
@app.route('/preview')
def preview():
...
#return rendered page for preview
#one button triggers publish()
#one button redirect to edit() and send back the form information
@app.route('/publish')
def publish():
...
#write content to database
#redirect to view()
@app.route('/')
def view():
...
#rendered page for viewing contents
问题是我应该如何来回传递内容。我想我可以
我认为两者都有效,但它们是否足够好或有效?这样做的专业方法是什么?
答案 0 :(得分:0)
我不会采用全局方式,因为那时你的Flask应用程序将保持状态,因为信息现在包含在Flask进程中,并且只在其中可见。因此,如果您碰巧产生了多个Web进程,您将获得不同版本的全局变量。此外,如果该进程崩溃/重新启动,则信息全部消失。
您希望将此内容用于显式保持状态,例如数据存储区(例如RDBMS,NoSQL等)或至少某种集中式“缓存”服务器对你的所有Flask进程。
您正在预览的内容将存在于数据存储区中,显示在表单上,并且在数据存储区中将具有某种ID(例如,RDBMS中的主键),您可以在Flask应用程序中传递。