首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在传递到HTML时,是否有一种方法可以嵌套url_for变量?(Python)

在传递到HTML时,是否有一种方法可以嵌套url_for变量?(Python)
EN

Stack Overflow用户
提问于 2020-09-13 18:30:57
回答 1查看 446关注 0票数 1

我试图通过将一些常见的HTML元素作为Flask变量,特别是我的样式表和脚本来模板它们。为了进一步简化和响应,我尝试使用url_for来连接这些。

在我的app.py中有:

代码语言:javascript
运行
复制
common_html = {
   'navbar': '''<nav class....>''',
   'scripts': '''<!-- D3 -->
        <script src="https://d3js.org/d3.v5.min.js"></script>
        <!-- Personal JS -->
        <script src="{{url_for('static', filename='javascript/myjs.js')}}"></script>'''
}

@app.route('/index')
def index():
   return render_template('index.html', common=common_html)

在我的HTML文件中:

代码语言:javascript
运行
复制
...
<body>
   <!-- Nav --!>
   {{common['navbar']|safe}}
   <h1>Stuff</h1>
</body>
<!-- Scripts -->
{{common['scripts']|safe}}
</html>

在浏览器中,我的导航条代码加载得非常好,但是包含url_for语句的脚本标记不能正常运行。在检查时,它看起来像<script src="{{url_for('static', filename='javascript/myjs.js')}}"></script>一样。脚本文件位于正确的目录/filepath中。

我试着去掉{{}}的双括号,用不同的引号来搅乱它们,但都没有用。我以前有过这种方法的记忆,但不能肯定。

在模板代码块中是否存在使用url_for的实践或方法,还是这种做法很糟糕?任何和所有的帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-13 19:05:50

我认为这样做的原因是jinja不会在已经呈现的东西里面呈现任何东西。因此,因为您是在双大括号内传递{{ url_for() }},它将自动转义其中的任何内容。基本上,您所做的是将Jinja语法放在Jinja未评估的内容中。看起来是这样的:

{{ "{{ url_for() }}" }}

记住,Jinja只会将第一个双大括号中的任何内容放在页面上(转义后),因此它不会呈现该{{url_for()}}的实际值。我建议使用基本模板,然后可以由其他页面继承。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63874215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档