2013-04-15 2 views
0

Я пытаюсь написать приложение Flask, которое запрашивает мою базу данных (используя peewee), и отправляет результаты в Jinja2 для рендеринга. На мой взгляд выглядит следующим образом:Передача списка от peewee to jinja2 в колбе

@application.route('/maindash') 
def maindash(): 
    sq = Selfreported.select().join(Demog).where(Demog.mrn == session['mrn']).order_by(Selfreported.reportingdate) 
    series1data = ["Series 1", ([s.reportingdate, s.series] for s in sq)] 
    jsonedData = json.dumps(series1data) 

    return render_template('maindash.html', seriesdata=jsonedData) 

Чтобы передать результаты из запроса в Jinja2, я знаю, что мне нужно сериализовать данные. Но когда я вызываю json.dumps: TypeError: at 0x104854be0> не является сериализуемым JSON. Итак, я думаю, что на самом деле я не получаю данные, но пытаюсь сериализовать сам объект запроса?

Каждый пример peewee, который я рассмотрел, использует функцию-помощник object_list из peewee-flask, а не передает результаты запроса прямо в render_template. Я посмотрел на object_list, но я с трудом понимая его -

def object_list(template_name, qr, var_name='object_list', **kwargs): 
kwargs.update(
    page=int(request.args.get('page', 1)), 
    pages=qr.count()/20 + 1 
) 
kwargs[var_name] = qr.paginate(kwargs['page']) 
return render_template(template_name, **kwargs) 

Есть ли способ на QueryResultWrapper я должен использовать, чтобы получить фактические данные, а не объекты? Я посмотрел на кортежи() и dict(), но я не мог перебирать их.

ответ

4

Нет никакой причины сериализовать данные, прежде чем передавать их в Jinja, поскольку Jinja написан на Python и может обрабатывать все, что может обрабатывать Flask. Просто передайте series1data в свой render_template вызов и ходить по нему в шаблоне:

return render_template('maindash.html', seriesdata=series1data) 

 

{# maindash.html #} 
{% for reportingdate, series in seriesdata[1] %} 
    {{ reportingdate }} - {{ series }}<br> 
{% endfor %} 

 Смежные вопросы

  • Нет связанных вопросов^_^