django -- static 静态文件


我们确实有如是的优点,但也要隐藏几分,这个叫做涵养


简单说明

关于静态文件的保存使用,应该保存下来的目录习惯,构建项目时将文件放到 app 中,css 文件目录为 appname/static/appname/style.css,图片等目录为 apname/static/appname/image/1.jpg,之所以加多一层 appname 目录,是因为防止多个 app 中存在相同名称的文件,导致出错

当项目部署时,将所有文件搜集到项目根目录下的 static/


app 下配置

  1. 确保 app 在 INSTALLED_APPS 中
  2. settings.py
STATIC_URL = '/static/'
  1. 在 app 下新建 static 文件夹并新建相应文件
  2. 引用/static/appname/style.css
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static "appname/style.css" %}">

根目录下

  1. settings.py
import os 
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static")
]
  1. 在根目录下新建 static 文件夹并新建文件
  2. 引用 /static/css/style.css
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static "css/style.css" %}">

优先级设置

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

部署使用

  1. 设置 static_root
STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static')
  1. 收集静态文件
python manage.py collectstatic
  1. nginx 部署
location /static {
    alias /path/to/project/collected_static;
}