我一直在尝试按照每一个教程和线程进行操作,但是我无法理解这一点。
很抱歉,但请把它作为我三岁的时间向我展示..
我有什么: 我想使用的CSS,为模板设计样式。
如何到达那里: MD:project / app / static /
将style.css放在那里
settings.py:
STATIC_ROOT = '/project/app/static/'
STATIC_URL = '/static/'
(当我在模板中尝试打印{{STATIC_URL}}时,不应该至少给我字符串'/ static /'吗?)
template:
<LINK REL=StyleSheet HREF="{{ STATIC_URL }}/style.css" TYPE="text/css" MEDIA=screen>
对我来说,下一个合乎逻辑的事情就是创建一个/ static / -url?
我真的迷失在这里......
答案 0 :(得分:2)
Django的静态文件系统大约有两件事:
将来自多个(特定于应用)目录的静态文件合并到一个可以从中提供服务的地方
通过HTTP提供这些文件
如果您有多个位于不同目录中的静态文件,则需要#1。如果要在使用开发服务器时查看这些文件,则需要#2。在生产中,您通常会跳过#2,因为#1的目的是将文件放在您的Web服务器可以访问它们的位置。
话虽如此,这就是你如何获得#1:
settings.py:
# This is a filesystem path
STATIC_ROOT = '/path/to/my/project/collected-static-files/'
# This is a URL prefix
STATIC_URL = '/static/'
INSTALLED_APPS = (
...
'django.contrib.staticfiles',
...
)
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.static',
...
)
此时,你可以做一些事情:
您将静态文件放在每个应用程序下的“/ static /”目录中。这就是django会寻找它们的地方。还有一个额外的设置STATIC_DIRS
,如果你的应用程序之外有静态文件,你可以使用它。
您可以运行manage.py collectstatic
让Django浏览所有应用程序,找到所有静态文件,并将它们复制到/path/to/my/project/collected-static-files
(这就是为什么该设置是文件系统路径。 )
您可以在模板中使用{{ STATIC_URL }}
来访问文件。
在开发模式下,在dev服务器下,Django将自动从STATIC_ROOT
目录中提供文件。
基本上,Django将为表单
的URL添加URL处理程序/static/some-dir/some-file-name
从文件系统路径
提供硬盘中的内容/path/to/my/project/collected-static-files/some-dir/some-file-name
在生产中,这不会自动发生,因此您必须配置您的Web服务器以执行相同的操作。 (通过Django的完整处理管道运行所有静态文件并不是一个好主意.Web服务器可以更有效地完成它)