0

我一直在努力遵循每一个教程和线程,我只是不能把它放在一起。

对不起,但请给我解释一下,好像我是三岁..

我所拥有的:我想使用的 CSS,模板样式。

如何到达那里:MD:项目/应用程序/静态/

将 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 吗?

我真的迷路了。。

4

1 回答 1

2

Django 的静态文件系统有两件事:

  1. 将多个(特定于应用程序的)目录中的静态文件组合到一个可以提供它们的位置

  2. 通过 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',
    ...
)

此时,您可以做几件事:

  1. 您将静态文件放在每个应用程序下的“/static/”目录中。那就是 django 会寻找它们的地方。STATIC_DIRS如果您的应用程序之外有静态文件,则可以使用附加设置。

  2. 您可以运行manage.py collectstatic让 Django 遍历您的所有应用程序,找到所有静态文件,并将它们复制到/path/to/my/project/collected-static-files(这就是为什么该设置是文件系统路径的原因。)

  3. 您可以{{ STATIC_URL }}在模板中使用来访问文件。

通过 HTTP 提供静态文件

在开发模式下,在开发服务器下,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 服务器可以更有效地执行此操作)

于 2012-03-26T13:31:06.997 回答