You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在script标签的src属性中使用Flask变量?

问题描述
  • 硬编码引入GitHub Gist脚本可正常运行:
    <script src="https://gist.github.com/xxxxxxx.js"></script>
    
  • 从数据库读取链接,通过模板语法{{ project.link }}渲染时无法生效:
    <script src={{ project.link }}></script>
    
    注:{{ project.link }}的实际值为https://gist.github.com/xxxxxxx.js
  • 尝试动态设置脚本src的方式也失败:
    先定义变量:
    <script type="text/javascript" id="myScript">
      var link ='{{ project.title }}'
    </script>
    
    再设置src:
    <script>
      document.getElementById('myScript').src = link;
    </script>
    
解决方法

1. 检查模板渲染输出

查看页面源代码,确认{{ project.link }}是否被正确渲染为完整URL,有没有被转义(比如出现&quot;这类字符)。如果存在转义问题,需在模板中关闭自动转义,不同引擎写法参考:

  • Jinja2/Django:使用{{ project.link|safe }}
  • Vue:确保绑定的是原始URL(或使用v-html,注意安全风险)

2. 修正动态脚本创建逻辑

之前的写法错误在于给已存在的<script>标签设置src,这种方式不会触发脚本加载。正确做法是动态创建新的script元素并插入页面:

<script>
  // 注意:之前代码里误用了project.title,要改成project.link
  var link = '{{ project.link }}';
  var script = document.createElement('script');
  script.src = link;
  document.body.appendChild(script);
</script>

3. 排查安全限制

检查浏览器控制台(F12开发者工具)的错误信息,看是否有CSP(内容安全策略)拦截或加载报错。同时确认后端框架/模板引擎没有对外部脚本链接做安全过滤。

内容的提问来源于stack exchange,提问作者fig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:07:37