Вы ожидаете большего, чем может сделать для вас jinja2. Пожалуйста, поймите, что jinja2 - это просто способ визуализации шаблонов, которые в конечном итоге являются HTML и Javascript, ничего особенного. Таким образом, в вашем случае вы не можете передать функцию Python в шаблон jinja2 и ожидать, что она будет работать нормально. Здесь вы можете передать данные, возвращаемые display_tbl
во время рендеринга шаблона, следующим образом:
def scraper():
...
return render_template(('completed.html', data=display_tbl(df))) # data= is important because this is how you are going to access your data in the template
…
def display_tbl(df):
… # Here you should be returning the data you want to display - a list or dict
В шаблоне
<html>
<head>
<meta charset="UTF-8">
<title>Summary of Scraped Data</title>
</head>
<body>
<h1>This is what you got! </h1>
<div>
{{ render_data() }}
</div>
<script>
var d = data | tojson
function render_data() {
// implement the logic to handle how your data should be rendered
}
</script>
</body>
</html>
Это просто грубая идея, но каквы видите, что вам нужно изменить способ восприятия шаблонов jinja2 и их взаимодействие с бэкэндом Python или Flask.