2012-08-23 30 views
19

私はFlask(フレームワークとして)とMongoDB(データベースサーバとして)を使用しています。今、私にできることすべてはちょうど私がデータベースから得た1つの引数を渡している: 例:私はMongoデータベース内:複数の変数を持つrender_template

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

は、どのように私は、データベースから複数の変数を渡すん私は私の中でこれらのものを持っていますデータベースと私はすべて私のテンプレートにそれらを渡したいと思います。

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

Flaskを使用すると可能ですか?

答えて

37

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

あなたはすべてのローカル変数

@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

+0

ああありがとう。私は複数の変数を使用しようとすると、デバッグページが発生しました。私はフラスコにエラーが発生しているMongoデータベースから渡された値でなければならないと思います。 –

+12

'locals()'に ''デフォルト、フラスコのようなインポートされたライブラリ ''が含まれていませんか? – Kracekumar

+0

MongoDBを使ってみれば、すべての変数を渡すのが賢明だと思いますか?パフォーマンスは賢明ですか?しかし、ヒントをありがとう。 –

9
return render_template('im.html', user= None, content = xxx, timestamp = xxx) 

必要なだけ多くの変数を渡すことができます。 api

抜粋:

flask.render_template(template_name_or_list、**コンテキスト) 指定されたコンテキストとテンプレートフォルダから テンプレートをレンダリング。

パラメータ:template_name_or_list - をレンダリングするテンプレートの名前、またはテンプレート名 がコンテキストにレンダリングされる既存の最初のもので反復可能 - テンプレートのコンテキストで利用可能であるべき変数を。

+0

[OK]を、おかげで多くのことを、あなたのデータを渡す渡すことができます。私はこれがMongoDB unicodeと関係があり、それをFlaskに解析しなければならないと思います。 –

関連する問題