Flask - 向路由中断图像添加参数

看来我误解了 Flask 应用程序中的路由如何与本地文件(图像)相关。

基本示例:

  1. 在我的网站 ( ) 的主页上@main_bp.route('/index'),我有一些内容,包括导航栏。导航栏包含一个图像,称之为logo.svg。导航栏中的图像始终在主页 ('/index') 上正确呈现。

导航栏以base.html. img 源是../static/images/logo.svg

  1. 我还有另一个页面,称之为web_content/<content_number>

在 中routes.py,它看起来像这样:@main_bp.route('/web_content/<content_number>', methods=['GET', 'POST'])

当我导航到此页面时,图像(包括logo.svg导航栏中的图像)呈现得很好。该页面使用{% extends 'base.html' %}

  1. 我正在尝试在我的网站中添加一个图层,将其命名为content_category. 因此,修改routes.py如下:@main_bp.route('/web_content/<content_category>/<content_number>

该页面呈现,所以我相信我在routes.py中的代码是好的(content_category在函数中定义等)但是,当我添加content_category参数时,导航栏中的图像在内容页面上中断。如果我返回主页,导航栏中的图像呈现得很好。所以它似乎不是全局损坏,仅在/web_content我添加另一个参数时在页面上出现。

这让我感到困惑,因为我只在 1 个位置定义了导航栏,base.html并且如果图像在一个位置渲染,我希望它们在任何地方渲染。


慕田峪9158850
浏览 146回答 1
1回答

DIEA

使用类似的路径../static/images/logo.svg将使浏览器加载该图像,相对于 URL 中的路径。通过添加这样的参数content_category可以更改该 URL 路径。url_for相反,在模板中使用 Flask 的函数来动态渲染正确的路径:<img&nbsp;src="{{&nbsp;url_for('static',&nbsp;filename='logo.svg')&nbsp;}}"&nbsp;/>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python