Django模型服务媒体文件

时间:2017-12-31 11:25:21

标签: django django-models django-templates django-views

我有两个模型:PackagesImagesImagesPackages有多对一关系。 Images表有一个外键package_id。我必须显示country的{​​{1}},price属性以及与该包相关的一个图像。可能有许多图像与单个包相关,但是我必须只选择一个。

表格如下:

Packages

  • ID
  • 国家

Packages

  • ID
  • URL
  • 的package_id

我的代码如下:

Views.py

Images

的index.html

def index(request):
    featured = Package.objects.filter(featured=True).order_by('-pub_date')[:4]
    featured_packages = []
    for item in featured:
    image = item.packageimages_set.all()[1]
    data = {'package': item, 'image': image}
    featured_packages.append(data)
    context = {'featured': featured_packages}
    return render(request, 'tours/index.html', context)

一切似乎都很好我得到了网址。但是,我没有得到输出。输出如下:

Image

我的错误在哪里?我无法显示图像。是否有更高效的方法来完成上述任务?

2 个答案:

答案 0 :(得分:0)

我试过这段代码:

featured_packages.append(data)

属性错误:' dict'对象没有属性'数据'

答案 1 :(得分:0)

我实际上尝试了不同的东西,最终找到了这个解决方案。 Views.py:

def index(request):
    packages = Package.objects.filter(featured=True).order_by('-pub_date')[:4]
    featured_packages = []
    for package in packages:
        image = package.packageimages_set.all()[1]
        data = {'package': package, 'image': image}
        featured_packages.append(data)
    return render(request, 'tours/index.html', {'featured_packages': featured_packages})

对Index.html稍作修改:

{% load static %}
{% load thumbnail %}


{% for item in featured_packages %}
{% thumbnail item.image.url "1170x480" crop="center" as im %}
<img src="{{im.url}}" width="{{im.width}}" height="{{im.height}}" alt>
{% endthumbnail%}
{% endfor %}

我不知道怎么回事,但这确实解决了我的问题。这是Screenshot。我得到一些加密的文件名,图片实际上正在加载。 它是缩略图吗?我正在使用sorl.thumbnail或者我不认为&#34;加载静态&#34;因为我试图在没有它的情况下加载文件而产生任何效果。它完全没用。