如何在<img src>中添加django模板变量?

问题描述 投票:0回答:5

我有一个包含两个字段的照片模型:

title = models.CharField()
path = models.CharField()

当我在管理面板中添加新照片时,路径等于

/images/image_ex.jpg
这是我的视图文件:

def gallery(request):
   photos = Photo.objects.all()
   return render(request, 'gallery.html', {'photos': photos})

这是gallery.html中的标签:

{% loadstaticfiles %}
<img src="{%static '{{photo.path}}'%}"/>

问题是照片没有渲染,如果我查看页面的代码,src 等于这样的东西:

src="static/%7B%7B%20photo.path%20%7D%7D"

问题是什么?如何在 src 中使用模板变量? 附:静态文件夹中存在图像文件夹,图像也存在。我将静态目录添加到settings.py。另外,如果我将 src 更改为普通的,例如

<img src="{static 'images/image_ex.png'%}">

照片渲染正常。

python django django-templates
5个回答
2
投票

您在这里将

'{{photo.path}}'
作为 string 传递给
{% static ... %}
,因此它只会将静态 URL 根添加到该字符串之前。

如果你想使用photo.path

内容
,你可以使用:

<img src="{% static photo.path %}"/>

因此

{% static ... %}
接受变量作为参数,并将获取
path
变量的
photo
属性的内容。 (当然,考虑到传递了变量,或者是使用
{% for ... %}
循环等生成的变量。


2
投票

这样做:

<img src="{%static 'images/'%}{{image_ex.png}}">

静态标签作用域结束后使用。


1
投票

使用for标签

{% for p in photos %}
    <img src="{% static '{{ p.path }}' %}"/>
{% endfor %}

更好地使用 Imagefield 作为模型中的字段

在您的设置中.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

在您的项目中创建一个名为“media”的文件夹(与您的应用处于同一级别)

在你的urls.py(主)中

from . import views, settings
from django.contrib.staticfiles.urls import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns


urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在你的 models.py 中

用 Imagefield 替换 CharField

image = models.ImageField(upload_to="my_folder_name")

像这样:

class Photo(models.Model):
    title = models.CharField()
    image = models.ImageField(upload_to="my_folder_name"))

在你看来.py

def gallery(request):
   photos = Photo.objects.all()
   return render(request, 'gallery.html', {'photos': photos})

在您的模板中

{% for p in photos %}
    <img src="{{ p.photo.url }}"/>
{% endfor %}

0
投票

对于模板

{% for image in all_image %}
    <img src="{{ image.image.url }}"/>
{% endfor %}

0
投票

已解决:在survey.html中动态加载图像

“survey.toolsTechnology”是一个动态变量,每次 变量发生变化,图像也会随之变化。

<img src="{% static 'images/'%}{{survey.toolsTechnology}}.png"/>
© www.soinside.com 2019 - 2024. All rights reserved.