2012-08-23 12 views
19

Estoy usando Flask (como framework) y MongoDB (como servidor de base de datos). En este momento, todo lo que puedo hacer es simplemente pasar un argumento que obtuve de la base de datos:render_template con múltiples variables

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

¿Cómo puedo pasar múltiples variables a partir de la base de datos: por ejemplo: en mi base de datos Mongo: tengo estas cosas en mi base de datos y me gustaría pasarlos a mi plantilla.

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

¿Es posible hacer eso usando el matraz?

Respuesta

37

Puede pasar múltiples parámetros a la vista.

se puede pasar toda su variable local

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

o simplemente pasar sus datos

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

api doc

+0

¡Gracias! Me encontraba con la página de depuración cuando traté de usar múltiples variables. Supongo que deben ser los valores pasados ​​de la base de datos de Mongo los que provocan un error en el matraz. –

+12

Por favor, no pase 'locals()' contiene todos los 'predeterminados, bibliotecas importadas como matraz' – Kracekumar

+0

Como puede ver usando MongoDB, ¿cree que es conveniente pasar todas las variables (escríbalos bajo def)? ¿En cuanto al rendimiento? Gracias por los consejos. –

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

Puede pasar tantas variables como necesite. El extracto api

:

flask.render_template (template_name_or_list, ** contexto) Renders una plantilla de la carpeta de plantilla con el contexto dado.

Parámetros: template_name_or_list - el nombre de la plantilla que se prestados, o un iterable con nombres de plantilla El primer contexto existente se representará - de las variables que deben estar disponibles en el contexto de la plantilla.

+0

Ok, muchas gracias. Supongo que esto tiene que ver con MongoDB unicode y analizarlo en Flask. –

Cuestiones relacionadas