2012-08-23 12 views
19

Używam Flask (jako framework) i MongoDB (jako serwer bazy danych). Teraz, wszystko co mogę zrobić, to po prostu przekazać jeden argument, że mam z bazy danych:render_template z wieloma zmiennymi

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

Jak mogę przekazać wiele zmiennych z bazy danych: np: w mojej bazy danych Mongo: mam te rzeczy w moim bazy danych i chciałbym przekazać je wszystkie do mojego szablonu.

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

Czy można to zrobić za pomocą kolby?

Odpowiedz

37

Możesz przekazać wiele parametrów do widoku.

można przejść wszystkie swojemu zmiennej lokalnej

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

lub po prostu przekazać swoje dane

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

api doc

+0

Oh Dzięki. Znalazłem stronę debugowania, gdy próbowałem użyć wielu zmiennych. Przypuszczam, że muszą to być wartości przekazywane z bazy danych Mongo, w której kolba napotyka błąd. –

+12

Proszę nie podawać 'locals()' zawiera wszystkie 'defaults, importowane biblioteki, takie jak kolba' – Kracekumar

+0

Jak widzisz, używając MongoDB, czy uważasz, że mądrze jest przekazać wszystkie zmienne (napisać je wszystkie pod def)? Wydajność mądra? Dzięki za porady. –

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

Możesz podać dowolną liczbę zmiennych. api

fragment:

flask.render_template (template_name_or_list ** kontekstu) Pozwala utworzyć szablon z katalogu szablonu do danego kontekstu.

Parametry: template_name_or_list - nazwa szablonu do renderowane, lub iterable o nazwach szablonów pierwszy istniejący będą renderowane kontekstowych - zmienne, które powinny być dostępne w kontekst szablonu.

+0

Ok, wielkie dzięki. Myślę, że to miało związek z unicode MongoDB i parsowanie go do Flask. –

Powiązane problemy