Django显示静态文件夹之外的图像/视频

Posted

技术标签:

【中文标题】Django显示静态文件夹之外的图像/视频【英文标题】:Django show image/video which is outside of static folder 【发布时间】:2017-07-09 20:03:09 【问题描述】:

我想制作一个在网络上显示文件树并在网络上打印图像/视频的网站。 我打算用html标签imgvideo打印它。但是路径存在一些问题。我的大部分静态文件(如视频或 img)都位于 django 项目文件夹之外。 例如 django 模板源和视图源在/Users/Knight/My-site/Damotorie_cafe/views.py,图像在/Applications/MAMP/practice 我尝试使用 python 代码获取相对路径并将其用于 src 属性。 当我不使用 django 并使用本地 Web 浏览器打开它时,相同的路径效果很好,但是当我使用 django 打开它时会出现错误。

我是 django 的初学者。谁能帮我? (我在问之前搜索了它,但大多数问题是关于上传不显示图像。)

【问题讨论】:

【参考方案1】:

您需要在 Django 中配置静态文件。在settings.py中,需要设置:

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    '/path/to/your/images/outside/web/tree/'
]
STATIC_URL = '/static/'

在开发中,您需要在您的基本 urls.py 文件中进行设置:

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^login', auth_views.login, name='login'),
    ...
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

然后在你的模板文件中,首先将它设置在模板文件的顶部,这样你就加载了'static'标签:

% load staticfiles %

然后你使用静态变量:

<img src="% static 'path/img' %"/>

诀窍是,Django 搜索 STATICFILES_DIRS 以在您的模板文件中找到该“路径”,因此最终“路径”必须与您在其他列出的 STATICFILES_DIRS 中的任何内容不同。它按顺序搜索列表,无论如何都会找到第一个匹配的。

【讨论】:

以上是关于Django显示静态文件夹之外的图像/视频的主要内容,如果未能解决你的问题,请参考以下文章

Django静态文件

调试模式打开时的 Django 和静态文件

在静态文件中加载图像

django 生产服务器中的静态文件

Django静态图像文件无法加载资源

从 Django 静态文件夹中获取图像的正确方法