web-dev-qa-db-ja.com

複数の変数を持つrender_template

Flask(フレームワークとして)とMongoDB(データベースサーバーとして)を使用しています。今、私ができることは、データベースから取得した引数を1つ渡すだけです。

@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を使用してそれを行うことは可能ですか?

28
Afeez Aziz

ビューに複数のパラメーターを渡すことができます。

すべてのローカル変数を渡すことができます

@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 doc

51
heat
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 –テンプレートのコンテキストで利用可能な変数。

13
abhinav

リストをrender_templateのコンテキスト変数に渡し、HTMLのJinjaの構文でその要素を参照することもできます。

example.py

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

exemple.html

...
<body>
    {% for e in l %}
        {{e}}
    {% endfor %}
</body>
...
1
PYB