首页 > 解决方案 > 为什么实际上以不同形式编写的相同路径不起作用?

问题描述

我在一个 django 项目中工作。我正在尝试显示保存在 Django 模型属性(ImageFielf)中的图像,它的路径是:../projectname/appname/static/img/imgname.png

考虑到这一点,我用 HTML 代码编写:

class="result-item-preview fadeIn animated " style="background-image:url('../../projectname/appname/static/img/1202296.jpg'), url('../static/img/default-movie.png');

但这不起作用。它仅在以通常的形式编写时才有效:

class="result-item-preview fadeIn animated " style="background-image:url('../static/img/1202296.jpg'), url('../static/img/default-movie.png');

如何解决这个问题呢 ?

标签: pythonhtmldjango

解决方案


在 Django 文档中,他们建议使用静态模板标签, https://docs.djangoproject.com/en/3.1/howto/static-files/

style="background-image:url({% static 'img/1202296.jpg' %}), url({% static 'img/default-movie.png' %});"

现在关于问题本身:为什么第一种方法不起作用?这是因为为您的 Web 应用程序提供服务的服务器不知道您的 Django 项目中的目录结构,因此它不知道在哪里可以找到 '../../projectname/appname/static/img/1202296.jpg' .

第二种方法有效,因为您在 Django 项目设置中定义了静态文件的位置,因此 Web 服务器知道如何查找静态文件以及如何为它们提供服务。


推荐阅读