Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取对python模块中列表的引用并对其进行迭代_Python_Python 3.x_Flask_Jinja2 - Fatal编程技术网

获取对python模块中列表的引用并对其进行迭代

获取对python模块中列表的引用并对其进行迭代,python,python-3.x,flask,jinja2,Python,Python 3.x,Flask,Jinja2,我正试图整合一个小网站,它有许多带有表单的页面。在这些表单中,我想添加一些下拉列表,并使用存储在项目模块中的列表来增强内容 这些列表基本上被用作枚举(我一直坚持使用Python3.4,显然Python在没有枚举支持的情况下做到了这一点) 我不想把每一个可能的列表都作为模型的一部分传递(这是低效的),但反过来,跟踪哪些列表在哪里使用,并确保模型被适当地填充,对于如此琐碎的事情来说,这似乎是一件非常麻烦的事 所以。。。我想写一个宏,它将采用一个列表名并为它生成一个下拉列表。我最初的尝试是: {% m

我正试图整合一个小网站,它有许多带有表单的页面。在这些表单中,我想添加一些下拉列表,并使用存储在项目模块中的列表来增强内容

这些列表基本上被用作枚举(我一直坚持使用Python3.4,显然Python在没有枚举支持的情况下做到了这一点)

我不想把每一个可能的列表都作为模型的一部分传递(这是低效的),但反过来,跟踪哪些列表在哪里使用,并确保模型被适当地填充,对于如此琐碎的事情来说,这似乎是一件非常麻烦的事

所以。。。我想写一个宏,它将采用一个列表名并为它生成一个下拉列表。我最初的尝试是:

{% macro dropdown(name, selected='') -%}
    <select name="{{ name }}">
        {% for item in Server.Enums.__dict__({{name}}) %}
            <option>{{item}}</option>
        {% endfor %}
    </select>
{%- endmacro %}
{%宏下拉列表(名称,所选=“”)-%}
{%用于服务器.Enums中的项。\u dict{({{name}})%}
{{item}}
{%endfor%}
{%-endmacro%}
失败,因为我无法获取枚举模块工作的引用


如何向Jinja公开Enum模块及其内部的列表,而不将其显式添加到模型中?

要引用模板中的某些内容,需要将其传递给模板。这可以通过以下两种方式之一实现

首先,您可以通过
render\u template
将其传入:

from somewhere import something

@app.route('/')
def index():
    return render_template('index.html', something=something)
但是,如果您想对每个模板都这样做,那么这可能会变得很麻烦并且容易出错。要为每个模板提供内容,可以使用


@dirn这很方便谢谢但问题仍然是。。。如何从jinja2模板中引用它们
from somewhere import something

@app.context_processor
def inject_things():
    return {'something': something}