Невозможно использовать шаблоны Jinja для передачи переменной из бэкэнда Starlette в веб-интерфейс Javascript
Я использую стартовую платформу ASGI и хочу сделать HTML-ответ.
Использование фиктивного маршрута ниже, чтобы проверить передачу переменной в веб-интерфейс javascript.
@app.route('/error')
async def server_error(request):
template = 'analyze_response.html'
context = {"request": request}
return templates.TemplateResponse(template, context, data=75)
Это мой файл analysis_response.html:
<html lang='en'>
<head>
<meta charset='utf-8'>
<link rel='stylesheet' href='../static/style.css'>
<script src='../static/client.js'></script>
<link rel="stylesheet" href="../static/cmGauge.css">
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="../static/cmGauge.js"></script>
<script type="text/javascript">
var data = {{ data|tojson }}
</script>
<script type="text/javascript" src="app.js"></script>
</head>
<body>
<div>
<div class='center'>
<div class='title'>Sentiment Analysis of Movie Reviews</div>
<div class='content'>
<form action="/analyze" class="form" method="post">
<div class="form-group">
<textarea rows = "10" cols = "100" name = "review_text"></textarea><br>
</div>
<div class='analyze'>
<input type="submit" class="form-submit-button" value="Analyze">
</div>
</form>
<div id="gaugeDemo" class="gauge gauge-big gauge-green">
<div class="gauge-arrow" data-percentage="40"
style="transform: rotate(0deg);"></div>
</div>
<script type="text/javascript">
$('#gaugeDemo .gauge-arrow').cmGauge();
$('#gaugeDemo .gauge-arrow').trigger('updateGauge', myFunc());
</script>
</div>
</div>
</div>
</body>
Согласно некоторым ответам, я попробовал все, но это все еще не работает.
Получение ниже ошибки:
Файл "app/server.py", строка 125, в server_error возвращает шаблоны.TemplateResponse(template, context, data=data) TypeError: TemplateResponse() получил неожиданный аргумент ключевого слова "data"
Подскажите пожалуйста, в чем проблема? Благодарю.
1 ответ
Вы должны передать его внутрь context
переменная:
@app.route('/error')
async def server_error(request):
template = 'analyze_response.html'
context = {'request': request, 'data': 75}
return templates.TemplateResponse(template, context)