【问题标题】:Trying to use a access a variable in another scope after render_template() (Flask)?尝试在 render_template() (Flask)之后使用访问另一个范围内的变量?
【发布时间】:2015-06-04 15:55:16
【问题描述】:

我正在尝试创建一个使用表单 (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 所以我不能只回忆这个函数。

我只是想不出一种方法来格式化代码或解决我的问题的解决方案,因此不胜感激。

【问题讨论】:

    标签: python python-2.7 flask jinja2 wtforms


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 2015-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      相关资源
      最近更新 更多