在Python Flask中传递函数之间的参数

时间:2016-05-24 18:05:00

标签: python flask

我正在尝试构建一个应用程序(使用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

问题是我应该如何来回传递内容。我想我可以

  1. 在app.py中创建一个全局变量,并通过不同的函数进行更改
  2. 创建一个临时文件(txt或数据库等)来存储信息
  3. 我认为两者都有效,但它们是否足够好或有效?这样做的专业方法是什么?

1 个答案:

答案 0 :(得分:0)

我不会采用全局方式,因为那时你的Flask应用程序将保持状态,因为信息现在包含在Flask进程中,并且只在其中可见。因此,如果您碰巧产生了多个Web进程,您将获得不同版本的全局变量。此外,如果该进程崩溃/重新启动,则信息全部消失。

您希望将此内容用于显式保持状态,例如数据存储区(例如RDBMS,NoSQL等)或至少某种集中式“缓存”服务器对你的所有Flask进程。

您正在预览的内容将存在于数据存储区中,显示在表单上,​​并且在数据存储区中将具有某种ID(例如,RDBMS中的主键),您可以在Flask应用程序中传递。