【问题标题】:Serve a folder different from the static directory in Django提供与 Django 中的静态目录不同的文件夹
【发布时间】:2014-11-25 23:02:24
【问题描述】:

我想使用 Django 提供静态模板,其静态文件路径已相对于该文件夹定义。

例如。我的目录结构为

olx
--static
--fonts
--olx files
--index.html

我正在尝试提供index.html 以及静态文件。在我的index.html 中,我提供了静态文件的路径,例如<img src="static/1.jpg"/>。如果我直接在我的计算机上打开 index.html 文件,它就可以工作。

我正在使用 Django 如下部署它

url(r'^olx/$', TemplateView.as_view(template_name='olx/index.html'), name='olx'),

模板已托管,但静态文件未托管。如何托管整个文件夹以便静态文件工作?

我已经为我的项目的其余部分设置了 STATICFILES_DIRS 和 STATIC_ROOT,它工作正常。我只需要弄清楚如何托管不同于主静态目录的静态文件。

【问题讨论】:

    标签: python django


    【解决方案1】:

    请记住,当您在链接中使用相对路径时,是浏览器解析它们 - 并且它相对于您当前所在的 URL,而不是服务器上的文件路径(它一无所知)。如果您在“olx/”处提供模板,则任何相关链接都将位于“olx/...”处。因此,您可以自行配置 Web 服务器以在该 URL 处提供相关的静态文件。

    说实话,虽然我不知道你为什么要这样做。将所有静态文件放在一个地方,如果需要,可以使用子目录(无论如何,collectstatic 都会这样做),并在该单一 URL 下提供它们。

    【讨论】:

    • 在某些情况下,某些公司需要通过将文件放置在特定路径(例如根目录或.well-known)来验证域所有权,我目前正在尝试解决这个问题。