web-dev-qa-db-fra.com

render_template avec plusieurs variables

J'utilise Flask (comme framework) et MongoDB (comme serveur de base de données). Pour le moment, tout ce que je peux faire, c'est simplement passer un argument que j'ai obtenu de la base de données:

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

Comment passer plusieurs variables de la base de données: par exemple: dans ma base de données Mongo: j'ai ces choses dans ma base de données et je voudrais les passer toutes à mon modèle.

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

Est-il possible de le faire en utilisant Flask?

28
Afeez Aziz

Vous pouvez transmettre plusieurs paramètres à la vue.

Vous pouvez passer toutes vos variables locales

@app.route('/')
def index():
  content = """
     teste
   """
  user = "Hero"
  return render_template('index.html', **locals())

ou passez simplement vos données

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

doc api

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

Vous pouvez transmettre autant de variables que nécessaire. Le api

extrait:

flask.render_template (template_name_or_list, ** context) Rend un modèle à partir du dossier de modèles avec le contexte donné.

Paramètres: template_name_or_list - le nom du modèle à rendre, ou un itérable avec des noms de modèle, le premier existant sera rendu dans le contexte - les variables qui devraient être disponibles dans le contexte du modèle.

13
abhinav

Il est également possible de passer une liste aux variables de contexte de render_template et de faire référence à ses éléments avec la syntaxe de Jinja en HTML.

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