django中的静态文件命名空间

Posted

技术标签:

【中文标题】django中的静态文件命名空间【英文标题】:Static files namespaces in django 【发布时间】:2016-06-18 18:31:47 【问题描述】:

我无法让 Django 中的静态文件与“命名空间”网址一起使用 - 我想知道我是否在这里遗漏了什么?

my project structure

基本上,我的项目“static_test”中有一个名为“foo”的应用程序。在该应用程序中,我有一个包含“test.txt”的“静态”文件夹。

我没有更改 settings.py 中的任何内容,因此它包含所有默认设置:静态文件包含在 INSTALLED_APPS 中,并且 STATIC_URL 设置为 '/static/'。

这一切完全按照Django官方教程:https://docs.djangoproject.com/en/1.9/howto/static-files/

我正在使用 Django 1.9.2。

当我启动 Django 开发服务器时,这是我得到的:

localhost:8000/static/test.txt - 200 OK 

localhost:8000/static/foo/test.txt - 404 Page not found

尽管官方教程声称

在您的模板中,或者硬编码像 /static/my_app/myexample.jpg 这样的 url,或者最好使用静态模板标签通过使用配置的 STATICFILES_STORAGE 存储来为给定的相对路径构建 URL(这使得它更容易当您想切换到内容交付网络 (CDN) 以提供静态文件时)。

为什么第二个 url (/static/foo/test.txt) 对我不起作用?为什么第一个网址有效?我没有项目范围的静态文件夹。

谢谢

【问题讨论】:

你的 STATICFILES_DIRS 怎么样 我的 settings.py 中没有它们。当你开始一个项目时,默认情况下是这样的,我还没有碰过。 【参考方案1】:

来自docs

您应该在设置中的STATICIFILES_FINDERS 变量中使用'django.contrib.staticfiles.finders.AppDirectoriesFinder'

【讨论】:

【参考方案2】:

第一个是在静态下搜索。 第二个在 foo 下 static 下。

您的链接应如下所示。

 href="% static "test.txt" %"

和 settings.py 一样

STATIC_URL = '/static/'

【讨论】:

以上是关于django中的静态文件命名空间的主要内容,如果未能解决你的问题,请参考以下文章

C++函数通过头文件分享给其他源文件时,使用命名空间方式,和使用类中静态函数方式,有何区别?

Django(命名空间)

C++ Primer 5th笔记(chap 18 大型程序工具)未命名的命名空间unnamednamespace

为啥未命名的命名空间是静态的“优越”替代品? [复制]

什么时候适合在 C++ 中使用静态(通过未命名的命名空间)?

django2中带有router.urls的命名空间