python - 如何从 Route() 装饰器导入变量以形成 Flask 中的文件?

标签 python python-2.7 import flask flask-wtforms

我想将我的程序的一个路由装饰器中声明的变量导入到表单中,但该表单在路由内部使用。

来 self 的views.py函数

@app.route('/test4', methods=['GET','POST'])
def test4():
    form1=SVN_Path()
    form2=Inputs()
    if request.method=="POST" and form1.validate_on_submit():
        prev_pdf=["test1.pdf","test2.pdf","test3.pdf","test4.pdf","test5.pdf"]
  ----> new_pdf=["ex1.pdf","ex2.pdf"]
        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)

我想将new_pdf的长度导入到我的表单文件中,该文件与我的views.py位于同一目录中。我知道我可以使用像 lengthpdf=len(new_pdf) 这样的语句来获取长度,但我不确定如何将其导入到 forms.py 其中包含

class Inputs(Form):
    files = FieldList(SelectField(u'File', validators =[Required()]),min_entries = 2)   

其中 min_entries 应等于 new_pdf 的长度

最佳答案

一种解决方案是使用 FieldList.append_entry() 。因此,您无需在定义 files 时指定 min_entries,而只需附加一个条目(就像对选择字段进行选择一样)。

例如。

def test4():
    form2 = Inputs()
    if request.method == "POST" and form1.validate_on_submit():
        prev_pdf = ["test1.pdf", "test2.pdf", "test3.pdf","test4.pdf", "test5.pdf"]
        new_pdf = ["ex1.pdf","ex2.pdf"]
        options = [("None","None")] + [(pdf, pdf) for pdf in new_pdf]
        for i in range(len(new_pdf)):
            form2.files.append_entry()
            form2.files[i].choices = options
            form2.files[i].default = "None"
        return render_template('test4.html', form1=form1, form2=form2, show=True, numfiles=len(prev_pdf), pdflist=prev_pdf)

关于python - 如何从 Route() 装饰器导入变量以形成 Flask 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627802/

相关文章:

python-2.7 - 运行 python ez_setup.py 时出现 python SSL 错误

python - 使用管道运算符在两个Python脚本之间流式传输多批数据

python 从另一个模块导入本地模块

python - 使用pythons oursql在mysql数据库中存储数据就是爬取。为什么?

python - Py_InitModule 复制名称但不复制函数指针?

python - 如何保持 2 列数据帧的 pandas groupby 计数为零?

python-2.7 - 如何使用 HTTPS 在 CherryPy WSGI 服务器 (Cheroot) 上运行 Flask 应用程序?

unit-testing - 如何用 Jest 模拟导入

sql - 使用 Cursor 在 SQL Server 中插入表

python - 如何记录 f2py 的 fortran 函数?