2016-02-18 3 views
0

У меня есть маршрут Flask, который аутентифицируется и подключается к AWS DynamoDB с помощью boto3 и вытягивает всю таблицу, сканируя ее, возвращая результат как JSON. Я хочу отображать результаты как HTML вместо этого, но передача JSON в render_template не работает, я получаю 500 внутренних ошибок сервера. Как визуализировать данные?Извлечь данные из DynamoDB в шаблон Jinja

@app.route("/x/") 
def x(): 
    #Authentication and connection omitted 
    table = dynamodb.Table(table_name) 
    response = table.scan() 
    js = json.dump(response) 
    #return js 
    return render_template('test.html', data=js) 
<ul> 
{% for item in data %} 
    <li>{{ item.Make}}</li> 
    <li>{{ item.Model}}</li> 
    <li>{{ item.Year}}</li> 
{% endfor %} 
</ul> 

Я хочу, чтобы выводить данные, как это:

Honda 
Civic 
2013 

Toyota 
Camry 
1999 

JSON данные:

{ 
    "Count": 2, 
    "Items": [ 
    { 
     "Make": "Honda", 
     "Model": "Civic", 
     "Year": "2013" 
    }, 
    { 
     "Make": "Toyota", 
     "Model": "Camry", 
     "Year": "1999" 
    } 
    ], 
    "ResponseMetadata": { 
    "HTTPStatusCode": 200, 
    "RequestId": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
    }, 
    "ScannedCount": 2 
} 
+0

Я редактировал вопрос, чтобы добавить больше деталей, вы думаете, что этого достаточно, чтобы быть собственно вопрос или я должен добавить больше информации? –

+0

, если ваш ответ js, это load (str), который возвращает dict из строки. Если это был диктофон, вам не нужно сбрасывать его, передавая его в представление. –

ответ

1

Если вы собираетесь отобразить данные в HTML, Дон» t дамп его в строку JSON. У вас есть словарь, итерация по нему не имеет смысла в этом контексте. Вы хотите перебрать значение items в этом словаре.

@app.route("/") 
def index(): 
    ... 
    response = table.scan() 
    return render_template('index.html', data=data) 
<table> 
<thead><tr><th>Make</th><th>Model></th><th>Year</th></tr></thead> 
<tbody>{% for item in data['items'] %}<tr> 
    <td>{% item['Make'] %}</td> 
    <td>{% item['Model'] %}</td> 
    <td>{% item['Year'] %}</td> 
</tr>{% endfor %}</tbody> 
</table> 
+0

Большое вам спасибо за вашу помощь, я был смущен тем, какие фактические данные я тянул за AWS, а ваш шаблон и итерация по данным действительно разъясняли, что я делал неправильно. Когда я достигаю достаточно высокого ранга, мой аккаунт переполнения стека я дам вам + 1. Спасибо снова! –

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