Создание новой функции в вашем литерале объекта и вызов конструктора кажется радикальным отходом от исходной проблемы, и это не нужно.
Вы не можете ссылаться на свойство sibling во время инициализации литерала объекта.
var x = { a: 1, b: 2, c: a + b } // not defined
var y = { a: 1, b: 2, c: y.a + y.b } // not defined
Простейшее решение для вычисляемых свойств (без кучи, без функций, без конструктора):
var x = { a: 1, b: 2 };
x.c = x.a + x.b; // apply computed property
Flask url_for
полагается на контекст запроса, вы не можете поместить его вне функции представления, попробуйте переместить цикл for в функцию home
.
Кроме того, вместо присоединения HTML-кода в Python, вы должны написать цикл for непосредственно в шаблоне (index.html
) с синтаксисом Jinja. Например:
<body>
{% for dog in dogs %}
Put your html code here.
You can generate URL like this: <a href="{{ url_for('detail') }}">
{% endfor %}
</body>
также не забудьте передать переменную dogs
с render_template:
@app.route('/')
def home():
return render_template("index.html", dogs=dogs)
Прочитайте документацию Jinja для получения более подробной информации.