@BogBel

Как передать данные из Flask view в HTML?

Необходимо построить диаграмму по данным которые передаются с view.
Вот она:
@app.route('/hello')
def getting():
    lst = []
    for raw in session.query(DataStoring).descending(DataStoring.population).limit(20):
        lst.append(raw)
    return render_template('chart.html', cities=lst)

Для большей ясности покажу еще модельку
class DataStoring(Document):
    _id = StringField()
    city = StringField()
    population = IntField()
    state = StringField()

    mongo_id = _id

    def __str__(self):
        return 'Id=%s City=%s  Population=%s State=%s ' % (self._id, self.city, self.population, self.state)

Собственно вот так, передаю массив данных на template
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/static/style.css">
    <title></title>
    <script src="http://d3js.org/d3.v3.js"></script>

</head>
<body>
{% for city in cities %}
<P>{{ city.city }}:{{ city.population }}</P>
{% endfor %}
<div class="chart"></div>
<script>
   
    var data=[];


    {% for city in cities %}
    
        data.push( {city:{{city.city}}, population:{{ city.population }} });
        console.log({{ city.city }});
        console.log({{ city.population }});
    {% endfor %}


   // var data=[10,20,30,40,50,60,70];
    d3.select(".chart")
  .selectAll("div")
    .data(data)
  .enter().append("div")
    .style("width", function(d) { return d/110 + "px"; })
    .text(function(d) { return d.population+d.city; });

</script>

</body>
</html>


В данный момент важен учаток, где идет обращение к {{city.city}}
Когда внутри <script></script> я пытаюсь обратиться к этим данным , то в консоли браузера получаю ошибку
0e4d831d5bb549d6baeb5c72a26d74e1.png
b69532448cd24530bebfd5ea2ad751ed.png
При том что если я ссылаюсь на int population то все нормально, никаких ошибок нет.
И вот еще когда я информацию публикую сразу в <p></p> за пределами скрипта, то все нормально.
Очень предположительно что проблема в том что в названии пробел.
Хотя это глупо.
  • Вопрос задан
  • 1010 просмотров
Решения вопроса 1
Tark
@Tark
Pyramid'альный мир
Эта конструкция - {{ city.city }} - выдаёт значение как оно есть, без кавычек. Попробуйте написать так:

console.log("{{ city.city }}");
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы