Django 模板语言 - 获取 url 编码值

Django Template Language - getting url encoded values

我正在使用 Django 模板语言,使用 加载静态文件。但是当我执行以下操作时

<img src="{% static 'img/category/{{category.category|lower|slugify}}.jpg' %}">

我得到 HTML 作为

<img src="/static/img/category/%7B%7Bcategory.category%7Clower%7Cslugify%7D%7D.jpg">

这显然没有渲染正确的图像。

然而我的预期输出是

<img src="/static/img/category/electronics.jpg">

其中 category.category = electronics

我将类别作为 ctx 变量传递。为什么会这样?

您不能在 static 标记中包含变量,这就是您在 HTML 输出中看到这些 %7B%7B 的原因。

但是您可以这样做:

{% load static %}
<img src="{% get_static_prefix %}img/category/{{category.category|lower|slugify}}.jpg">

首先 - 该图像不应该从媒体文件中提供吗?静态文件不是为了与模型连接而设计的,这就是媒体文件的用途。

其次 - 你不能在 django 的其他标签中使用变量语法。除非 tag 被设计成带一些参数,否则你不能将它们传递进去。