3.1 Django管理工具-创建项目骨架
2025-02-17
概述
Django 提供了强大的命令行工具 django-admin,用于创建和管理项目。本章将介绍:
- 如何创建新项目
- 项目结构说明
- 配置文件详解
3.1.1 django-admin 创建项目骨架
创建新项目
使用 django-admin 创建新项目:
# 创建名为 my_bbs 的项目
django-admin startproject my_bbs项目结构
命令执行后会生成以下项目结构:
my_bbs/ # 项目根目录
├── manage.py # 项目管理脚本
└── my_bbs/ # 项目配置包
├── __init__.py # Python 包标识
├── settings.py # 项目配置文件
├── urls.py # URL 路由配置
└── wsgi.py # WSGI 应用入口文件说明
| 文件 | 用途 |
|---|---|
| manage.py | 项目管理命令行工具 |
| settings.py | 项目配置文件 |
| urls.py | URL 路由映射配置 |
| wsgi.py | WSGI 服务器入口 |
启动开发服务器
# 进入项目目录
cd my_bbs
# 启动开发服务器
python manage.py runserver
# 指定端口启动
python manage.py runserver 8080环境验证
# 检查 Django 版本
python -m django --version
# 进入项目 shell
python manage.py shell3.1.2 settings.py文件配置项解析
settings.py 文件包含了项目的所有配置项,以下详细说明每个配置的作用:
BASE_DIR
__file__:显示当前文件的位置os.path.abspath(__file__):返回当前文件的绝对路径os.path.dirname(os.path.abspath(__file__)):得到当前文件所在的目录os.path.dirname(os.path.dirname(os.path.abspath(__file__))):返回项目根目录的绝对路径
# 在 shell 中验证 BASE_DIR
from my_bbs.settings import BASE_DIR
print(BASE_DIR)SECRET_KEY
- 用途:对需要加密的数据进行 Hash 处理
- 如:密码重置、表单提交、session 数据等
- 建议:存储到系统环境变量中,通过
os.getenv()获取 - 生成:在 startproject 时通过
get_random_string生成 50 位随机字符串
# 密钥设置(建议使用环境变量)
SECRET_KEY = 'your-secret-key'DEBUG
- 作用:控制是否显示详细的错误信息和调试信息
- 开发环境:设置为 True
- 生产环境:必须设置为 False
# 调试模式(生产环境设为 False)
DEBUG = TrueALLOWED_HOSTS
- 作用:配置允许访问当前站点的域名列表
- 当 DEBUG=False 时必须配置
- 示例:
ALLOWED_HOSTS = ['*']允许所有域名访问
# 允许访问的主机
ALLOWED_HOSTS = ['*']INSTALLED_APPS
- 作用:配置当前项目需要加载的 App 列表
- 默认包含:
- admin:管理后台
- auth:认证系统
- sessions:会话系统
- 可根据需要增减配置
INSTALLED_APPS = [
'django.contrib.admin', # 管理后台
'django.contrib.auth', # 认证系统
'django.contrib.sessions', # 会话系统
# ... 其他应用
]MIDDLEWARE
- 作用:配置需要加载的中间件列表
- 默认包含:
- SessionMiddleware:处理会话
- AuthenticationMiddleware:处理认证
- 可根据需要增减配置
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
# ... 其他中间件
]ROOT_URLCONF
- 作用:指定项目的根 URL 配置
- 是 Django 路由系统的入口点
ROOT_URLCONF = 'my_bbs.urls'TEMPLATES
- 作用:项目的模板配置
- 配置结构:列表中每个元素是一个字典
- 默认使用 DTL(DjangoTemplates)模板引擎
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',
],
},
},
]DATABASES
- 作用:数据库配置
- 默认使用 SQLite3
- 支持多数据库配置
- 生产环境通常需要修改此配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}国际化相关配置
- LANGUAGE_CODE:语言环境
- TIME_ZONE:时区设置
- USE_I18N:是否开启国际化(I18N)
- USE_L10N:是否开启本地化(L10N)
- USE_TZ:时区处理
- True:存储到数据库的时间使用 UTC
- False:使用本地时间
# 语言和时区
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
# 国际化和本地化
USE_I18N = True
USE_L10N = True
USE_TZ = TrueSTATIC_URL
- 作用:指定静态资源的访问路径
STATIC_URL = 'static/'最佳实践
项目结构
- 保持清晰的目录结构
- 遵循 Python 包命名规范
- 合理组织配置文件
配置管理
- 使用环境变量
- 分离开发和生产配置
- 保护敏感信息
开发流程
- 使用版本控制
- 遵循 Django 最佳实践
- 保持代码整洁
注意:
- 不要在版本控制中提交 SECRET_KEY
- 生产环境禁用 DEBUG
- 谨慎配置 ALLOWED_HOSTS