首页 > 解决方案 > 如何在没有静态的情况下在 Django 模板中显示图像?

问题描述

我有一个 API,它为我提供了电影列表,并且图像位于HTTP链接中,例如:

https://d2gx0xinochgze.cloudfront.net/5/public/public/system/posters/12/thumb/Tevar-Movie-Opening-Day-Box-Office-Collection-Report-1140x752_1482917123.jpg

所以在django中我们使用静态文件{% static 'image.jpg' %}在模板中显示图片,但是如何在模板中显示api图片链接呢?

标签: pythondjango

解决方案


{% static 'image.jpg' %}不会神奇地使图像出现在网站上,django 会根据给定的内容呈现模板。静态意味着查看静态文件夹,将给定参数作为文件搜索,并获取给定静态资产的 url。

在您的特定情况下,您说您获得了图像的网址。您可以轻松地将这些 url 添加到上下文中,这将成为渲染过程的一部分。

对于函数视图,它大致如下所示。

def view(request, *a, **kw):
    template = loader.get_template('my_template.html')
    context = {'my_image': get_image_from_api()}
    return HttpResponse(template.render(context, request))

对于基于类的视图,它大致如下所示。

class MyView(TemplateView):
    template_name = 'my_template.html'
    def get_extra_context(self):
        _super_context = super().get_extra_context()
        context = {'my_image': get_image_from_api()}
        return {**_super_context, **context}

对于这两种观点,大致相同;您现在可以{{my_image}}在模板内部使用来引用 url。希望能帮助到你!


推荐阅读