Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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_Mongodb_Flask - Fatal编程技术网

Python 具有多个变量的渲染模板

Python 具有多个变量的渲染模板,python,mongodb,flask,Python,Mongodb,Flask,我使用Flask(作为框架)和MongoDB(作为数据库服务器)。现在,我所能做的就是传递我从数据库中得到的一个参数: @app.route('/im/', methods=['GET', 'POST']) def im_research(user=None): error = None if request.method == 'POST': if request.form['user']: user = mongo.db.Users.f

我使用Flask(作为框架)和MongoDB(作为数据库服务器)。现在,我所能做的就是传递我从数据库中得到的一个参数:

@app.route('/im/', methods=['GET', 'POST'])
def im_research(user=None):
    error = None
    if request.method == 'POST':
        if request.form['user']:
            user = mongo.db.Users.find_one_or_404({'ticker':request.form['user']})
            return redirect(url_for('im_user',user= user) )
        else:
            flash('Enter a different user')
            return redirect(url_for('im'))
    if request.method == 'GET':
       return render_template('im.html', user= None)
如何从数据库传递多个变量: 在我的Mongo数据库中:我的数据库中有这些东西,我想将它们全部传递到我的模板中

{
users:'xxx'
content:'xxx'
timestamp:'xxx'
}
可以用烧瓶吗

return render_template('im.html', user= None, content = xxx, timestamp = xxx)
您可以根据需要传递任意多的变量。

摘录:

flask.render_模板(模板名称或列表,**上下文) 呈现 使用给定上下文从模板文件夹中删除模板

参数:模板\u名称\u或\u列表–要创建的模板的名称 呈现的,或模板名为第一个现有模板的iterable 将在上下文中呈现–应在中可用的变量 模板的上下文

{
users:'xxx'
content:'xxx'
timestamp:'xxx'
}

可以向视图传递多个参数

可以传递所有局部变量

@app.route('/')
def index():
  content = """
     teste
   """
  user = "Hero"
  return render_template('index.html', **locals())
或者只是传递你的数据

def index() :
    return render_template('index.html', obj = "object", data = "a223jsd" );

还可以传递一个列表来呈现模板的上下文变量,并使用HTML中的Jinja语法引用其元素

示例.py

l = [user, content, timestamp]
return render_template('exemple.html', l=l)
example.html

...
<body>
    {% for e in l %}
        {{e}}
    {% endfor %}
</body>
...
。。。
{l%中的e为%1}
{{e}}
{%endfor%}
...

哦,谢谢。当我尝试使用多个变量时,遇到了调试页面。我猜一定是从Mongo数据库传递的值导致flask遇到错误。请不要传递
locals()
它包含所有
默认值,导入的库如flask
无需传递带有**locals()的所有变量。您只需将某些字典“context={…}”作为**上下文传递即可。示例:当我运行
locals()
时,我看不到默认值或导入的库。我只看到我在函数内部设置的局部值,可能是@kracekumar,您意外地在函数外部、全局范围外运行了
locals()
?很可能是@brandon。有时为了避免循环导入,在函数中使用import语句。所以我个人不喜欢传递
locals()
,尽管django docs广泛使用它。好的,非常感谢。我猜这与MongoDB unicode有关,并将其解析为Flask。此方法不再提供单个项,而是分解每个字符