【问题标题】:Flask Variables in Javascript Do Not Show Up [duplicate]Javascript中的Flask变量不显示[重复]
【发布时间】:2018-04-15 13:52:35
【问题描述】:

我正在努力找出我在这里犯的错误。

完整的故事:我已经将一些数据作为 JSON 保存到数据库中,就像这样

Photo of Database

当我使用代码调用此函数时,我从数据库中复制和粘贴。

<script>
particlesJS(
  {"particles":{"number":{"value":80,"density":{"enable":true,"value_area":800}},"color":{"value":"#000000"},"shape":{"type":"circle","stroke":{"width":0,"color":"#000000"},"polygon":{"nb_sides":5},"image":{"src":"img/github.svg","width":100,"height":100}},"opacity":{"value":0.5,"random":false,"anim":{"enable":false,"speed":1,"opacity_min":0.1,"sync":false}},"size":{"value":3,"random":true,"anim":{"enable":false,"speed":40,"size_min":0.1,"sync":false}},"line_linked":{"enable":true,"distance":150,"color":"#ffffff","opacity":0.4,"width":1},"move":{"enable":true,"speed":6,"direction":"none","random":false,"straight":false,"out_mode":"out","bounce":false,"attract":{"enable":false,"rotateX":600,"rotateY":1200}}},"interactivity":{"detect_on":"canvas","events":{"onhover":{"enable":true,"mode":"repulse"},"onclick":{"enable":true,"mode":"push"},"resize":true},"modes":{"grab":{"distance":400,"line_linked":{"opacity":1}},"bubble":{"distance":400,"size":40,"duration":2,"opacity":1,"speed":3},"repulse":{"distance":100,"duration":0.4},"push":{"particles_nb":4},"remove":{"particles_nb":2}}},"retina_detect":true}
);
</script>

一切正常。但是,当我通过 Python Flask 传递它时......

@app.route('/load_ban', methods = ['GET', 'POST'])
def load():
  banner = get_banner_data()

  but_txt = banner.button_text
  ban_txt = banner.banner_text
  text_color = banner.text_color
  button_color = banner.button_color
  button_border_color = banner.button_border_color
  button_size = banner.button_size
  banner_size = banner.banner_size
  preset = banner.animated_presets

return render_template('banner.html', but_txt=but_txt, ban_txt=ban_txt, text_color = text_color, button_color = button_color, button_border_color = button_border_color, button_size = button_size, banner_size = banner_size, preset = preset)

我使用以下代码:

<script>
particlesJS(
  {{preset}}
);
</script>

而且它不起作用。我不完全确定为什么,因为 {{preset}} 的内容应该与 DB 内容完全相同,对吧?

我也尝试过 JSON.parse({{preset}}),但也没有用。

关于我可能做错的任何想法?希望我忽略了一些相当简单的事情。

更新:这是渲染模板中的源代码:

    <script>
    particlesJS(
      {&#34;particles&#34;:{&#34;number&#34;:{&#34;value&#34;:80,&#34;density&#34;:{&#34;enable&#34;:true,&#34;value_area&#34;:800}},&#34;color&#34;:{&#34;value&#34;:&#34;#000000&#34;},&#34;shape&#34;:{&#34;type&#34;:&#34;circle&#34;,&#34;stroke&#34;:{&#34;width&#34;:0,&#34;color&#34;:&#34;#000000&#34;},&#34;polygon&#34;:{&#34;nb_sides&#34;:5},&#34;image&#34;:{&#34;src&#34;:&#34;img/github.svg&#34;,&#34;width&#34;:100,&#34;height&#34;:100}},&#34;opacity&#34;:{&#34;value&#34;:0.5,&#34;random&#34;:false,&#34;anim&#34;:{&#34;enable&#34;:false,&#34;speed&#34;:1,&#34;opacity_min&#34;:0.1,&#34;sync&#34;:false}},&#34;size&#34;:{&#34;value&#34;:3,&#34;random&#34;:true,&#34;anim&#34;:{&#34;enable&#34;:false,&#34;speed&#34;:40,&#34;size_min&#34;:0.1,&#34;sync&#34;:false}},&#34;line_linked&#34;:{&#34;enable&#34;:true,&#34;distance&#34;:150,&#34;color&#34;:&#34;#ffffff&#34;,&#34;opacity&#34;:0.4,&#34;width&#34;:1},&#34;move&#34;:{&#34;enable&#34;:true,&#34;speed&#34;:6,&#34;direction&#34;:&#34;none&#34;,&#34;random&#34;:false,&#34;straight&#34;:false,&#34;out_mode&#34;:&#34;out&#34;,&#34;bounce&#34;:false,&#34;attract&#34;:{&#34;enable&#34;:false,&#34;rotateX&#34;:600,&#34;rotateY&#34;:1200}}},&#34;interactivity&#34;:{&#34;detect_on&#34;:&#34;canvas&#34;,&#34;events&#34;:{&#34;onhover&#34;:{&#34;enable&#34;:true,&#34;mode&#34;:&#34;repulse&#34;},&#34;onclick&#34;:{&#34;enable&#34;:true,&#34;mode&#34;:&#34;push&#34;},&#34;resize&#34;:true},&#34;modes&#34;:{&#34;grab&#34;:{&#34;distance&#34;:400,&#34;line_linked&#34;:{&#34;opacity&#34;:1}},&#34;bubble&#34;:{&#34;distance&#34;:400,&#34;size&#34;:40,&#34;duration&#34;:2,&#34;opacity&#34;:1,&#34;speed&#34;:3},&#34;repulse&#34;:{&#34;distance&#34;:100,&#34;duration&#34;:0.4},&#34;push&#34;:{&#34;particles_nb&#34;:4},&#34;remove&#34;:{&#34;particles_nb&#34;:2}}},&#34;retina_detect&#34;:true}
    );
    </script>

【问题讨论】:

  • 在浏览器中查看你的源代码,看看{{preset}} 是怎么过来的。您可能有一些未按预期解析的 unicode 或语法问题。在此处粘贴源代码以进行更多诊断。
  • 哈哈你是对的,我已经编辑了原始帖子,它在底部。
  • 所以本质上是 "出现而不是“” ...嗯,这怎么能解决?
  • JSON.parse()?
  • 它看起来就像 JSON.parse() 围绕着那个烂摊子哈哈

标签: javascript jquery html sql flask


【解决方案1】:

将其更改为{{preset|safe}},它应该可以工作

【讨论】:

  • 成功了!你能解释一下为什么吗?
  • Flask 需要 |safe 标志来将内容标记为安全,以便在模板中用作 html。否则,它不会知道 Add a &lt;br /&gt; to your code 作为您要显示给用户的文本或句子中的换行符之间的区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 2015-07-10
  • 1970-01-01
  • 2017-12-20
  • 2018-11-19
  • 2014-05-10
  • 1970-01-01
相关资源
最近更新 更多