2017-01-26 7 views
0

Я создаю приложение для флэша, и мне нужно передать переменную, созданную на 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> 

Когда я открываю консоль, я вижу следующее:

[&#39;Michael&#39;] 

Амперсанд # 39 является ASCII кодировка символов для апострофа. Если я опускаю апострофы (одинарные кавычки) из console.log заявления выше (который выглядит как console.log({{ name }})) я получаю следующее сообщение об ошибке:

Uncaught SyntaxError: Unexpected token &

Самое странное то, когда я печатаю переменную в любом месте за пределами <script> тегах работает отлично.

Любая идея в чем проблема и как ее исправить?

ответ

1

, если вы хотите принять действительный JSON объект/список и использовать его в яваскрипта обиход tojson фильтр в дзиндзя, как это:

console.log({{ name|tojson }}); 

tojson фильтр также отмечает значение как safe так отключить автоматический побега.

+0

'name' - это список не словарь. почему мы разрешаем использовать json-фильтр? и это работает для меня, пользуюсь ли я «tojson», «безопасным» или обоими, спасибо! лучше ли использовать тот или иной или оба? основанный на документах jinja2, кажется, что 'safe' встроен в' tojson' –

+1

да ... я думаю, что это может быть новым дополнительным после того, как я узнал этот трюк;) технически список действителен JSON, хотя обычно это не так, как мы думаем Это. рад, что это помогло. будет обновлять ответ на основе использования только 'tojson' – abigperson