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

如何在<img>标签的src属性中使用Django模型属性的值

问题根因

Django 模板语法不支持在{% static %}等模板标签的参数内部嵌套{{ }}变量插值语法,因此你写的变量会被当作普通字符串处理,经过URL编码后就出现了%7B%7Bmodel.atributte%7D%7D这类输出。


解决方案1:模板层用add过滤器拼接(全版本兼容)

使用Django内置的add过滤器拼接路径片段,再传入static标签即可正常解析变量:

{% load static %}
<img src="{% static 'media/'|add:model.attribute|add:'.jpg' %}" alt="{% static 'media/'|add:model.attribute|add:'.jpg' %}">

注意:你当前代码里的属性名写为atributte,请检查是否和模型实际定义的属性名attribute拼写一致,避免取值失败。


解决方案2:用静态资源前缀直接拼接(Django 3.0+适用)

如果你的Django版本在3.0及以上,可以用{% get_static_prefix %}获取静态资源根路径,直接和变量拼接,语法更直观:

{% load static %}
<img src="{% get_static_prefix %}media/{{ model.attribute }}.jpg" alt="{% get_static_prefix %}media/{{ model.attribute }}.jpg">

解决方案3:视图层预生成路径(适合复杂拼接逻辑)

如果路径拼接规则比较复杂,也可以直接在视图层完成路径生成,模板直接调用即可:

# views.py 代码
from django.templatetags.static import static

def your_view(request):
    # 获取你的模型实例
    model = YourModel.objects.get(pk=xxx)
    # 预生成完整静态路径
    img_full_path = static(f'media/{model.attribute}.jpg')
    return render(request, '你的模板文件名.html', {'img_full_path': img_full_path})

模板中直接使用变量即可:

<img src="{{ img_full_path }}" alt="{{ img_full_path }}">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:54:07