[python]django-settings.py
settings.py 是 Django 项目的核心配置文件,它包含了项目的各种配置项,这些配置项定义了项目的运行环境、数据库连接、应用列表、中间件、模板引擎等关键设置。以下是 settings.py 中一些常见配置项的详细解释:
1. 基本配置
1.1 DEBUG
DEBUG = True
- 作用:控制是否开启调试模式。
- 默认值:
False - 说明:在开发阶段通常设置为
True,这样可以显示详细的错误页面。在生产环境中,必须将其设置为False,以避免泄露敏感信息。
1.2 ALLOWED_HOSTS
ALLOWED_HOSTS = ['example.com']
- 作用:定义允许访问项目的主机名或 IP 地址。
- 默认值:
[] - 说明:在生产环境中,必须设置为实际的主机名或 IP 地址,以防止 HTTP 主机头攻击。
2. 应用配置
2.1 INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 自定义应用
]
- 作用:定义项目中安装的应用列表。
- 默认值:Django 默认安装的应用列表
- 说明:每个应用都需要在这里注册,以便 Django 能够加载其配置和模型。
3. 中间件配置
3.1 MIDDLEWARE
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',
]
- 作用:定义项目中使用的中间件列表。
- 默认值:Django 默认的中间件列表
- 说明:中间件可以处理请求和响应,执行诸如身份验证、会话管理、CSRF 保护等任务。
4. 数据库配置
4.1 DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
- 作用:定义项目使用的数据库配置。
- 默认值:SQLite 数据库
- 说明:你可以配置多种数据库,如 MySQL、PostgreSQL 等。例如:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': '127.0.0.1', 'PORT': '5432', } }
5. 模板配置
5.1 TEMPLATES
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'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',
],
},
},
]
- 作用:定义项目使用的模板引擎和模板目录。
- 默认值:Django 默认的模板配置
- 说明:
DIRS指定了模板文件的目录,APP_DIRS指定了是否在应用目录中查找模板文件。
6. 静态文件配置
6.1 STATIC_URL
STATIC_URL = 'static/'
- 作用:定义静态文件的 URL 前缀。
- 默认值:
/static/ - 说明:静态文件(如 CSS、JavaScript、图片等)的 URL 前缀。
6.2 STATICFILES_DIRS
STATICFILES_DIRS = [BASE_DIR / 'static']
- 作用:定义静态文件的目录。
- 默认值:
[] - 说明:在开发阶段,Django 会从这些目录中查找静态文件。
6.3 STATIC_ROOT
STATIC_ROOT = BASE_DIR / 'staticfiles'
- 作用:定义静态文件的收集目录。
- 默认值:
None - 说明:在生产环境中,运行
collectstatic命令时,Django 会将所有静态文件收集到这个目录。
7. 媒体文件配置
7.1 MEDIA_URL
MEDIA_URL = 'media/'
- 作用:定义媒体文件的 URL 前缀。
- 默认值:
/media/ - 说明:媒体文件(如用户上传的图片、文件等)的 URL 前缀。
7.2 MEDIA_ROOT
MEDIA_ROOT = BASE_DIR / 'media'
- 作用:定义媒体文件的存储目录。
- 默认值:
None - 说明:媒体文件的存储路径。
8. 国际化和本地化
8.1 LANGUAGE_CODE
LANGUAGE_CODE = 'en-us'
- 作用:定义项目的默认语言。
- 默认值:
'en-us' - 说明:支持多种语言,例如
'zh-hans'表示简体中文。
8.2 TIME_ZONE
TIME_ZONE = 'UTC'
- 作用:定义项目的时区。
- 默认值:
'UTC' - 说明:支持多种时区,例如
'Asia/Shanghai'表示北京时间。
8.3 USE_I18N
USE_I18N = True
- 作用:是否启用国际化。
- 默认值:
True - 说明:启用后,Django 会根据用户的语言偏好显示内容。
8.4 USE_L10N
USE_L10N = True
- 作用:是否启用本地化。
- 默认值:
True - 说明:启用后,Django 会根据用户的地区偏好显示内容。
8.5 USE_TZ
USE_TZ = True
- 作用:是否启用时区支持。
- 默认值:
True - 说明:启用后,Django 会使用时区感知的时间。
9. 认证和授权
9.1 AUTH_USER_MODEL
AUTH_USER_MODEL = 'myapp.CustomUser'
- 作用:定义自定义用户模型。
- 默认值:
'auth.User' - 说明:如果你需要自定义用户模型,可以在这里指定。
9.2 LOGIN_URL
LOGIN_URL = '/login/'
- 作用:定义登录页面的 URL。
- 默认值:
'/accounts/login/' - 说明:用户未登录时,访问需要登录的页面会重定向到这个 URL。
9.3 LOGIN_REDIRECT_URL
LOGIN_REDIRECT_URL = '/'
- 作用:定义登录成功后的重定向 URL。
- 默认值:
'/' - 说明:用户登录成功后,会重定向到这个 URL。
10. 安全配置
10.1 SECRET_KEY
SECRET_KEY = 'your_secret_key'
- 作用:定义项目的密钥。
- 默认值:随机生成的密钥
- 说明:用于加密签名等操作,必须保持秘密。
10.2 CSRF_COOKIE_SECURE
CSRF_COOKIE_SECURE = True
- 作用:是否通过 HTTPS 发送 CSRF 令牌。
- 默认值:
False - 说明:在生产环境中,建议设置为
True,以提高安全性。
10.3 SESSION_COOKIE_SECURE
SESSION_COOKIE_SECURE = True
- 作用:是否通过 HTTPS 发送会话 cookie。
- 默认值:
False - 说明:在生产环境中,建议设置为
True,以提高安全性。
11. 日志配置
11.1 LOGGING
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': BASE_DIR / 'debug.log',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
- 作用:定义项目的日志配置。
- 默认值:Django 默认的日志配置
- 说明:可以配置日志的输出方式、级别等。
12. 其他配置
12.1 ROOT_URLCONF
ROOT_URLCONF = 'myproject.urls'
- 作用:定义项目的 URL 配置文件。
- 默认值:
'projectname.urls' - 说明:Django 会从这个文件中加载 URL 路由。
12.2 WSGI_APPLICATION
WSGI_APPLICATION = 'myproject.wsgi.application'
- 作用:定义项目的 WSGI 应用程序。
- 默认值:
'projectname.wsgi.application' - 说明:Django 会从这个文件中加载 WSGI 应用程序。
13. 启动方式
manage.py 是 Django 项目的管理脚本,它负责启动开发服务器、运行管理命令等。在 manage.py 文件中,有以下关键代码:
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings'):这行代码设置了环境变量 DJANGO_SETTINGS_MODULE,指定了项目的配置文件路径。默认情况下,它指向 myproject/settings.py。
总结
settings.py 是 Django 项目的核心配置文件,它定义了项目的各种配置项。通过合理配置这些选项,你可以控制项目的运行环境、数据库连接、应用列表、中间件、模板引擎等关键设置。在开发和生产环境中,需要根据实际情况进行适当的调整。

浙公网安备 33010602011771号