python - 尝试在 render_template() (Flask)之后使用访问另一个作用域中的变量?

标签 python python-2.7 flask jinja2 wtforms

我正在尝试创建一个网络应用程序,它使用表单(WTForms)来获取两个 svn url 并执行某些操作/显示它们。它将有一个更新按钮,如果单击该按钮,将显示一个包含信息的表格以及执行其他功能的另一个提交按钮(使用赋予 render_template 的show=True)

views.py :

@app.route('/test4', methods=['GET','POST'])
def test4():

    form1=SVN_Path()
    form2=Inputs()
    if request.method=="POST":
        if request.form.get('updatepaths')=='Update' and form1.validate_on_submit():
        --> basepath=createDir()
            svn_url1 = form1.svn_url1.data
            svn_url2 = form1.svn_url2.data
        --> prev_pdf=PDF_List(svn_url1,basepath,'prev')  #function that generates a list
            new_pdf=PDF_List(svn_url2,basepath,'new')   #function that generates a list
            options=[("None","None")]+[(pdf,pdf) for pdf in new_pdf]
            for sub_form in form2.files:
                sub_form.choices= options
                sub_form.default="None"
            return render_template('test4.html',form1=form1,form2=form2,show=True,numfiles=len(prev_pdf),pdflist=prev_pdf)
        elif request.form.get('batchfiles')=='Submit':
            #I WANT TO USE PREV_PDF AND BASEPATH IN THIS PART BUT IT IS OUT OF SCOPE
    else:
        return render_template('test4.html',form1=form1,form2=form2)

elif部分:elif request.form.get('batchfiles')=='Submit': 是仅当单击第一个提交时才会出现的第二个提交,但是,

问题出现的时间:在代码的该部分中,我想使用 basepath 和 prev_pdf ,这超出了范围,因为我在第一个 if 的末尾返回了 render_template 。陈述。另外,我也无法再访问 form1.svn_url1.data,因此我无法记忆起该功能。

我只是想不出一种格式化代码的方法或解决我的问题的解决方案,因此感谢您的帮助。

最佳答案

只有当您将 prev_pdf 存储在下一个请求中可以访问的位置时,您才能尝试执行此操作。我建议将列表本身 (prev_pdf) 存储在 Flask Session 中或存储 svn_url1,以便您可以在第二个请求时重新生成列表。请参阅this如何使用 FLask session 的示例。

正如您所发现的,您需要保存该数据的原因是,每个 HTTP 请求都是完全独立的,并且与先前的请求“隔离”,因此请求之间通信的唯一方法是从 HTTP 请求传递您想要的信息。每次客户端,或将该信息保存在服务器端并在每次请求时访问它。

关于python - 尝试在 render_template() (Flask)之后使用访问另一个作用域中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30648582/

相关文章:

python - Keras GaussianNoise 层没有效果?

python - 从 Python 中的 __str__ 方法返回 int

python - flask WTForms : validation InputRequired for at least one field

flask - JSONAPI : Update relationships including attributes

javascript - 即使在 Flask WebApp 中状态为 200 后也无法打开页面

python - 从 Google Maps API v3 获取纬度和经度

python - 将月份转换为德语缩写

python - 如何将 dict 的值写入 openpyxl 中的空(新)列?

python - 压缩错误 : Invalid command arguments (cannot write zip file to terminal)

Python 交替引用新实例