46

我正在使用 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'
}

是否可以通过使用 Flask 来做到这一点?

4

3 回答 3

81

您可以将多个参数传递给视图。

您可以传递所有局部变量

@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" );

api文档

于 2012-08-23T17:07:24.620 回答
18
return render_template('im.html', user= None, content = xxx, timestamp = xxx)

您可以根据需要传递任意数量的变量。api _

摘抄:

flask.render_template(template_name_or_list, **context) 从给定上下文的模板文件夹中渲染一个模板。

参数: template_name_or_list – 要渲染的模板的名称,或者带有模板名称的迭代,第一个存在的模板将被渲染 context – 应该在模板上下文中可用的变量。

于 2012-08-23T16:55:01.480 回答
7

也可以将一个列表传递给 render_template 的上下文变量,并在 HTML 中使用 Jinja 的语法来引用它的元素。

例子.py

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

例子.html

...
<body>
    {% for e in mylist %}
        {{e}}
    {% endfor %}
</body>
...
于 2019-06-30T20:56:44.053 回答