如果你遵循 django 的指导方针,你可以大大简化你的生活。
在您的示例代码中,在您的 application 目录中,创建一个名为 static 的文件夹。在此文件夹中,放置您的 css 文件。
例子:
$ django-admin.py startproject myproject
$ cd myproject
myproject$ python manage.py startapp myapp
myproject$ mkdir myapp/static
myproject$ cd myapp/static
myproject/myapp/static$ nano style.css
在您的模板中:
<link rel="stylesheet" href="{{ STATIC_URL }}style.css" />
确保将myapp 添加到settings.py 的INSTALLED_APPS 列表中。现在,当您使用内置的开发服务器时,您的样式表将正确呈现。
Django 默认在已安装的应用程序中搜索static 目录,而在当前版本的 Django 中,默认启用静态文件。
Django 示例的路径 my_app/static/my_app/myimage.jpg
如果您的应用和项目具有相同的名称,这会有点混乱。
这是推荐的,因为当您运行collectstatic 来收集所有静态文件时,同名文件将被覆盖。如果您在另一个应用程序中有一个名为myimage.jpg 的文件,它将被覆盖。在静态目录中提供应用程序名称将防止这种情况发生,因为确切的目录结构将在您的 STATIC_ROOT 目录中复制。
一个简单的例子来说明这一点。如果你有一个包含两个应用的 django 项目,像这样:
.
├── assets
├── manage.py
├── myapp
│ ├── __init__.py
│ ├── models.py
│ ├── static
│ │ └── myapp
│ │ └── test.txt
│ ├── tests.py
│ └── views.py
├── myproj
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ └── wsgi.py
└── otherapp
├── __init__.py
├── models.py
├── static
│ └── otherapp
│ └── test.txt
├── tests.py
└── views.py
assets 是您的STATIC_ROOT。现在当你运行collectstatic:
.
├── assets
│ ├── myapp
│ │ └── test.txt
│ └── otherapp
│ └── test.txt
├── manage.py
├── myapp
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── models.py
│ ├── static
│ │ └── myapp
│ │ └── test.txt
│ ├── tests.py
│ └── views.py
├── myproj
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ └── wsgi.py
└── otherapp
├── __init__.py
├── __init__.pyc
├── models.py
├── static
│ └── otherapp
│ └── test.txt
├── tests.py
└── views.py
您会看到它也在创建目录。在您的模板中,您现在可以使用应用程序的“命名空间”来引用每个文件:{{ STATIC_URL }}/myapp/test.txt