javascript - 无法通过 Template Bottle 将数据发送到 Javascript

标签 javascript python html jinja2 bottle

我有一个小的Python脚本,它应该将一个字符串发送到我的HTML文件中的javascript,以便在页面上呈现。但是,该脚本没有接收从 Python 文件发送给它的数据。我的代码如下:

简单.html:

<html>
 <body>
   <h1>Hello</h1>
   <p1 id="demo"></p1>
   <script>
    var s  = {{to_display}};
    var x = document.getElementById("demo");
    x.innerHTML = s;
   </script>
 </body>
</html>

main.py:

from bottle import Bottle, template

app = Bottle()

@app.route('/')
def index():
   data = {"to_display":"HI, how are you"}
   return template("simple.html", data)

if __name__ == '__main__':
    app.run()

我希望页面看起来像这样:

Hello

HI, how are you

不幸的是,它只显示:

Hello

有人知道如何解决这个问题吗?

最佳答案

这里的问题是模板没有呈现有效的 JavaScript。

>>> from bottle import template
>>> data = {'to_display': 'HI, how are you'}
>>> rendered = template('/home/kev/tmp/test.html', data)
>>> print rendered
<html>
  <body>
    <p1 id="demo"></p1>
    <script>
        var s = HI, how are you;
        var x = document.getElementById("demo");
        x.innerHTML = s;
    </script>
  </body>
</html>

在浏览器中加载此 html 会引发语法错误(在 Firefox 52.3.0 上测试):

SyntaxError: missing ; before statement

问题在于 s 的定义<script> 中未引用标签。修复版本:

<html>
  <body>
    <p1 id="demo"></p1>
    <script>
        var s = "{{ to_display }}";
        var x = document.getElementById("demo");
        x.innerHTML = s;
    </script>
  </body>
</html>

渲染到此标记,它在浏览器中按预期工作:

>>> print rendered
<html>
  <body>
    <p1 id="demo"></p1>
    <script>
        var s = "HI, how are you";
        var x = document.getElementById("demo");
        x.innerHTML = s;
    </script>
  </body>
</html>

关于javascript - 无法通过 Template Bottle 将数据发送到 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46106642/

相关文章:

javascript - WordPress 和 JS 冲突

javascript - 使用 javascript 从对象数组中去除键值

javascript - 什么是只包装字符串一部分的 wrap 方法?

python - SQLite 值错误 : parameters are of unsupported type

javascript - 带文字的 CSS/Javascript 动画

javascript - 通过几个选定的选项访问多个选择上的特定属性

python - 匹配列表中的任何关键字是否存在于字符串中

python - 使用 Python win32com 获取 Excel 工作表列表

javascript - 谷歌翻译 - 改回以前的语言不起作用

javascript - 悬停时使用淡入淡出效果交换图像