Я создаю приложение для флэша, и мне нужно передать переменную, созданную на back-end python, на javascript на front-end, чтобы отслеживать определенные параметры. Тем не менее, я столкнулся с проблемой странного кодирования. Ниже приведен пример, описывающий back-end python, визуализированный внешний интерфейс Jinja2 и ошибку, отображаемую на консоли Chrome.колба: ошибка передачи переменных в javascript
app.py:
@app.route('/')
def send_name():
name = ["Michael"]
return render_template('index.html', name=name)
index.html:
<html>
<script>
console.log('{{ name }}')
</script>
</html>
Когда я открываю консоль, я вижу следующее:
['Michael']
Амперсанд # 39 является ASCII кодировка символов для апострофа. Если я опускаю апострофы (одинарные кавычки) из console.log заявления выше (который выглядит как console.log({{ name }})
) я получаю следующее сообщение об ошибке:
Uncaught SyntaxError: Unexpected token &
Самое странное то, когда я печатаю переменную в любом месте за пределами <script>
тегах работает отлично.
Любая идея в чем проблема и как ее исправить?
'name' - это список не словарь. почему мы разрешаем использовать json-фильтр? и это работает для меня, пользуюсь ли я «tojson», «безопасным» или обоими, спасибо! лучше ли использовать тот или иной или оба? основанный на документах jinja2, кажется, что 'safe' встроен в' tojson' –
да ... я думаю, что это может быть новым дополнительным после того, как я узнал этот трюк;) технически список действителен JSON, хотя обычно это не так, как мы думаем Это. рад, что это помогло. будет обновлять ответ на основе использования только 'tojson' – abigperson