Передача URL-адреса из python в JavaScript в Flask

У меня есть это фляжное приложение

@app.route('', methods=['POST'])
def my_function():
 (...some functions...)
 map = some_url    
 return render_template ("main.html", map = map)

И я хочу вставить «карту» в свой JavaScript (.js находится в /static):

 btn.addEventListener("click", function(){
   var newMap = document.createElement("IMG");     
   newMap.setAttribute("src", "{{map}}");
   newMap.setAttribute("width", "300");
   newMap.setAttribute("height", "300");

Я делаю print(map) перед return render_template, и он печатается хорошо, но newMap создается, но пуст, как и без src.


person Toto Briac    schedule 12.03.2020    source источник
comment
Возможно, взгляните на этот вопрос, который предполагает, что вы используете jinja для рендеринга шаблонов: stackoverflow.com/questions/11178426/   -  person Jon    schedule 12.03.2020
comment
@Jon, я уже просмотрел этот пост, но когда я использую {{ variable }}, он вызывает SyntaxError в моей консоли JavaScript.   -  person Toto Briac    schedule 12.03.2020
comment
Проверь это. Если javascript находится в /static, это не шаблон, и jinja не будет его отображать: stackoverflow.com/questions/29335633/   -  person Jon    schedule 12.03.2020


Ответы (1)


Есть альтернативное решение, которое будет работать нормально. Вы можете создать скрытый ввод и установить его значение в переменную карты

<input type="hidden" value={{map}} id="inputId"/>

Теперь, используя javascript, получите доступ к значению и измените второй параметр setAtrribute на mapValue.

mapValue = document.getElementById("inputId").value
newMap.setAttribute("src", mapValue);


                                
person charchit    schedule 23.05.2021