python - 为什么实际上以不同形式编写的相同路径不起作用?
问题描述
我在一个 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');
如何解决这个问题呢 ?
解决方案
在 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 服务器知道如何查找静态文件以及如何为它们提供服务。
推荐阅读
- tensorflow - 具有多输入 KerasClassifier 的 Sklearn cross_val_score
- javascript - Neutrinojs 的 React 项目在控制台中显示“Invalid Host/origin Header”
- batch-file - 批处理文件:双引号内的双引号
- java - 可以编译文件但在尝试执行时找不到主类
- c# - 元素“网络浏览器”。如何等待页面加载?
- postgresql - Prometheus postgresql node_exporter 配置
- java - String 对象被实习后的状态
- reactjs - react native fs readDir 结果在渲染中为空
- docker - 我们对 docker 容器有某种超时选项吗?
- python - 如何将参数传递给 StringVar 的回调?