Estoy usando Matraz(marco) y MongoDB(como servidor de base de datos). Ahora, todo lo que puedo hacer es pasar un argumento que me dieron en la base de datos:

@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 varias variables 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 pasar toda mi plantilla.

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

Es posible hacer que, mediante el uso Frasco?

InformationsquelleAutor Afeez Aziz | 2012-08-23

3 Comentarios

  1. 52

    Puede pasar varios parámetros a la vista.

    Usted 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

    • Oh, Gracias. Yo era encontrar la página depuración cuando traté de hacer uso de múltiples variables. Supongo que debe ser de los valores pasados de Mongo base de datos que está haciendo el matraz de encontrar el error.
    • Por favor, don’t pass locals() contiene todos los defaults, imported libraries like flask
    • Como puedes ver estoy usando MongoDB, ¿crees que es prudente pasar todas las variables(escribir todos ellos bajo def)? El rendimiento de sabio? Gracias por los consejos, aunque.
    • no hay necesidad de pasar todas las variables con **locals(). Usted puede simplemente pasar ciertos diccionario «context={…}» como **contexto. Ejemplo: render_template(‘index.html’, **contexto)
    • Cuando ejecuto locals() veo ningún defecto o las bibliotecas importadas. Solo puedo ver los valores locales que he creado dentro de mi función, tal vez, @kracekumar, accidentalmente, se corrió locals() fuera de una función, en el ámbito global?
    • Lo más probable @brandon. A veces para evitar el circular de las importaciones,las sentencias de importación se utilizan dentro de funciones. Así que yo personalmente no se como pasar locals(), a pesar de que django docs utiliza ampliamente.

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

    Puede pasar tantas variables como usted necesita.
    El api

    extracto:

    matraz.render_template(template_name_or_list, **contexto)
    Hace un
    plantilla de la plantilla en la carpeta con el contexto.

    Parámetros: template_name_or_list – el nombre de la plantilla que se
    se prestó, o un iterable con los nombres de las plantillas de la primera existentes
    será dictada en un contexto – el de las variables que deben estar disponibles en
    el contexto de la plantilla.

    • Ok, muchas gracias. Supongo que esto tenía que ver con MongoDB unicode, y analizarlo para Matraz.
  3. 1

    También es posible pasar de una lista a render_template las variables de contexto, y se refieren a sus elementos con Jinja la sintaxis de HTML.

    example.py

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

    exemple.html

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

Dejar respuesta

Please enter your comment!
Please enter your name here