django的settings中几个static设置项的关系


django的settings中包含三个static相关设置项:
STATIC_ROOT
STATIC_URL

STATICFILES_DIRS

STATIC_URL 好理解,就是映射到静态文件的url,一般为/static/
STATICFILES_DIRS 是个列表,放各个app的static目录及公共的static目录

STATIC_ROOT 是总的static目录,可以使用命令自动收集static文件

更加详细的解释:

STATIC_ROOT:运行manage.py collectstatic后静态文件将复制到的目录。注意:不要把你项目的静态文件放到这个目录。这个目录只有在运行collectstatic时才会用到。我最开始想当然的以为这个目录和MEDIA_ROOT的作用是相同的,致使在开发环境下一直无法找到静态文件。

STATIC_URL:设置的static file的起始url,这个只可以在template里面引用到。这个参数和MEDIA_URL的含义差不多。

STATICFILES_DIRS:除了各个app的static目录以外还需要管理的静态文件位置,比如项目公共的静态文件差不多。和TEMPLATE_DIRS的含义差不多。

各个APP下static/目录下的静态文件django的开发服务器会自动找到,这点和以前APP下的templates目录差不多。


假设有个工程djangodemo,有两个app为demo1跟demo2

django处理static的方法是把各个app各自的static合并到一处

比如
djangodemo/djangodemo/static 放置公共静态文件
djangodemo/demo1/static 放置该app自己的静态文件
djangodemo/demo2/static 放置该app自己的静态文件
可以这么设置:
?
1
2
3
4
5
6
7
8
9
STATIC_ROOT= '/www/djangodemo/djangodemo/static '
 
STATIC_URL= '/static/'
 
STATICFILES_DIRS= (
    'djangodemo/static',
    'demo1/static/',
    'demo2/static/',
)
使用命令
?
1
manage.py collectstatic
就会自动把所有静态文件全部复制到STATIC_ROOT中
如果开启了admin,这一步是很必要的,不然部署到生产环境的时候会找不到样式文件

在配置 Django 的 `settings.py` 文件时,需要注意以下几点: 1. `SECRET_KEY`:这是 Django 的安全密钥,用于加密用户数据。可以通过在命令行运行 `python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'` 生成一个随机的密钥,并将其复制到 `settings.py` 文件。 2. `DEBUG`:如果设置为 `True`,Django 将在调试模式下运行,这样可以方便地调试代码。但是在生产环境应该将其设置为 `False`,因为这会暴露你的应用程序的敏感信息。 3. `ALLOWED_HOSTS`:这是一个列表,其包含允许访问应用程序的主机名或 IP 地址。在生产环境,应该将其设置为应用程序的实际域名或 IP 地址。 4. 数据库配置:在 `DATABASES` 字典配置数据库连接信息,包括数据库引擎、数据库名称、用户名、密码、主机和端口等。 以下是一个示例 `settings.py` 文件: ```python import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) SECRET_KEY = 'your-secret-key-here' DEBUG = True ALLOWED_HOSTS = ['localhost', '127.0.0.1'] INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'yourproject.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'yourproject.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True STATIC_URL = '/static/' ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值