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++函数通过头文件分享给其他源文件时,使用命名空间方式,和使用类中静态函数方式,有何区别?
C++ Primer 5th笔记(chap 18 大型程序工具)未命名的命名空间unnamednamespace