(二)Django框架常用配置
接上文:
1.Django框架配置概述
Django的配置系统允许开发者⾃定义框架的⾏为。所有配置都定义在项⽬的 settings.py ⽂件中,
这是⼀个包含Python变量的模块。Django的配置遵循以下原则:
- 所有配置都是Python代码,可以动态设置
- 配置按模块组织,便于管理
- ⽀持不同环境(开发、测试、⽣产)的配置
Django的配置是动态的,因为django在启动时会动态的加载seetings.py的配置项,而且这些配置项可以通过代码,环境变量来进行调整。
2.Django框架的基础路径配置
Django框架的基础路径配置是通过settings.py⽂件中的BASE_DIR配置项来完成的。BASE_DIR配置项⽤于绑定当前项⽬的绝对路径,且该路径是动态计算出来的,所有项⽬⽂件都可以依赖此绝对路径。具体代码如下:
# 项⽬根⽬录
BASE_DIR = Path(__file__).resolve().parent.parent
3 Django框架的启动模式配置
Django⽀持多种启动模式,最常⽤的是开发服务器和⽣产服务器。
Django框架的启动模式配置是通过settings.py⽂件中的DEBUG配置项来完成的。具体说明如下:
- 当DEBUG = True时,表示开发环境中使⽤“调试模式”,该模式主要⽤于开发过程中的调试。
- 当DEBUG = False时,表示当前项⽬运⾏在“⽣产环境”中,该模式主要⽤于不启⽤调试模式的情形。
# 安全警告:请勿在⽣产环境中开启调试模式
DEBUG = True
4 Django框架的站点访问权限配置
Django框架的站点访问权限配置是通过settings.py⽂件中的ALLOWED_HOSTS配置项来完成的。
ALLOWED_HOSTS配置项⽤于设置是否允许访问到本项⽬的⽹络地址列表,具体说明如下:
- 当ALLOWED_HOSTS配置项取值为[],即空列表,表示只有127.0.0.1、localhost、'[::1]'能访问本项⽬。
- 当ALLOWED_HOSTS配置项取值为['*'],表示任何⽹络地址都能访问当前项⽬。
- 当ALLOWED_HOSTS配置项取值为['*.hostname.cn', 'django.com'],表示只有当前这两个主机能访问 当前项⽬。
注意 如果想要局域⽹内的其他主机也能访问此服务器,那么在启动服务器时应使⽤如下命令:
python manage.py runserver 0.0.0.0:8000
上述命令指定局域⽹内的所有主机都可以通过8000端⼝访问。此外,ALLOWED_HOSTS需要设置为 ['*']。
5 Django框架的App配置
在settings.py⽂件的INSTALLED_APPS配置项中,可以查看到关于项⽬应⽤(App)的配置信息。另外, 设计⼈员可以在其中增加⾃定义App。具体代码如下:
# Django项⽬中已安装的应⽤程序列表
# 该列表⽤于配置Django项⽬需要加载的应⽤模块
# 包含Django内置的管理、认证、会话等核⼼应⽤以及⾃定义应⽤
INSTALLED_APPS = ['django.contrib.admin', # Django内置的应⽤, ⽤于管理Django项⽬'django.contrib.auth', # Django内置的应⽤, ⽤于处理⽤户认证'django.contrib.contenttypes', # Django内置的应⽤, ⽤于处理数据库'django.contrib.sessions', # Django内置的应⽤, ⽤于处理会话'django.contrib.messages', # Django内置的应⽤, ⽤于处理消息'django.contrib.staticfiles', # Django内置的应⽤, ⽤于处理静态⽂件'myapp', # 添加应⽤名, ⽤于处理⾃定义应⽤
]
创建和注册app的命令示例
python manage.py startapp 应用名
6 Django框架的中间件配置
在settings.py⽂件的MIDDLEWARE配置项中,可以查看到关于项⽬所注册的中间件的配置信息。
中间件是处理请求和响应的钩⼦。Django按顺序执⾏中间件,具体代码如下:
# Django项⽬中间件配置列表
# 该列表定义了Django请求/响应处理过程中要经过的中间件组件
# 中间件按照列表顺序依次执⾏,每个中间件负责处理特定的功能
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', # 安全中间件, ⽤于设置
安全HTTP头部'django.contrib.sessions.middleware.SessionMiddleware', # 会话中间件,
⽤于处理⽤户会话管理'django.middleware.common.CommonMiddleware', # 通⽤中间件, ⽤于处理URL规
范化'django.middleware.csrf.CsrfViewMiddleware', # CSRF中间件, ⽤于处理跨站
请求伪造攻击'django.contrib.auth.middleware.AuthenticationMiddleware', # 认证中间
件, ⽤于处理⽤户认证相关功能'django.contrib.messages.middleware.MessageMiddleware', # 消息中间件,
⽤于处理⼀次性消息提示功能'django.middleware.clickjacking.XFrameOptionsMiddleware', # XFrameOpt
ions中间件, ⽤于防⽌点击劫持攻击
]
7 Django框架的模板配置
在settings.py⽂件的TEMPLATES配置项中,可以查看到关于项⽬模板的配置信息。项⽬模板⽤于存放 静态HTML⽂件的配置信息,具体代码如下
# TEMPLATES配置列表,⽤于定义Django项⽬的模板引擎设置
# 每个字典元素代表⼀个模板引擎的配置,包含以下关键配置项:
# BACKEND: 指定模板引擎的后端实现类路径
# DIRS: 指定模板⽂件的搜索⽬录列表
# APP_DIRS: 是否在已安装应⽤的templates⽬录中⾃动查找模板
# OPTIONS: 模板引擎的额外配置选项,如上下⽂处理器等
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', #
使⽤Django模板引擎, ⽤于处理模板⽂件'DIRS': [], # 模板⽂件的搜索⽬录列表'APP_DIRS': True, # 是否在已安装应⽤的templates⽬录中⾃动查找模板'OPTIONS': {# context_processors: 上下⽂处理器列表,⽤于向模板上下⽂中添加变量# request: 添加request对象到模板上下⽂# auth: 添加⽤户认证相关变量到模板上下⽂# messages: 添加消息框架相关变量到模板上下⽂'context_processors': ['django.template.context_processors.request', # 添加reque
st对象到模板上下⽂'django.contrib.auth.context_processors.auth', # 添加⽤户
认证相关变量到模板上下⽂'django.contrib.messages.context_processors.messages', #
添加消息框架相关变量到模板上下⽂],},},
]
'APP_DIRS'为True时会到各个APP中去寻找模板,找到⼀个结果就会返回。
模板使⽤的优先级DIRS⾼于APP_DIRS。
8 Django框架的数据库配置
Django应⽤程序的数据库配置是在settings.py⽂件中的DATABASES字段中定义的。Django应⽤程序默 认配置的是SQLite数据库,代码如下:
# Django数据库配置字典,⽤于定义项⽬中使⽤的数据库连接信息
# 包含两个数据库配置:默认的SQLite数据库和⼀个MySQL数据库配置
DATABASES = {# 默认数据库配置,使⽤SQLite3数据库引擎'default': {'ENGINE': 'django.db.backends.sqlite3', # 数据库引擎为SQLite3'NAME': BASE_DIR / 'db.sqlite3', # 数据库⽂件路径,位于项⽬根⽬录下的d
b.sqlite3⽂件},# MySQL数据库配置,命名为'mysql''mysql': {'ENGINE': 'django.db.backends.mysql', # 数据库引擎为MySQL'NAME': 'mydb', # 数据库名称'USER': 'root', # 数据库⽤户名'PASSWORD': 'root23', # 数据库密码'HOST': '127.0.0.1', # 数据库服务器地址'PORT': '3306', # 数据库端⼝号}
}
'NAME'字段定义的是MySQL数据库名;另外,如果是SQLite数据库,就需要填写数据库⽂件的绝对位 置。
在上⾯的配置过程完成后,就可以安装Python连接MySQL数据库的驱动程序PyMySQL了,具体⽅法如 下:
pip install mysqlclient # 官⽅推荐
# 或
pip install pymysql #
Django 默认 只连接 default 键。
9 Django框架的根级路由配置
在settings.py⽂件的ROOT_URLCONF配置项中,可以查看到项⽬根级路由的配置信息
# ROOT_URLCONF = 'DjangoProjectName.urls'
ROOT_URLCONF = 'mysite.urls' # Django项⽬的URL配置⼊⼝
10 Django框架的语⾔配置
在settings.py⽂件的LANGUAGE_CODE配置项中,可以查看到项⽬语⾔的配置信息。
Django⽀持国际化和本地化,示例代码如下:
LANGUAGE_CODE = 'en-us' # 语⾔代码, ⽤于设置Django项⽬的语⾔, 默认为英⽂
# 语⾔代码
LANGUAGE_CODE = 'zh-hans'
# ⽀持的语⾔
LANGUAGES = [('zh-hans', ('简体中⽂')),('en', ('English')),
]
# 翻译⽂件⽬录
LOCALE_PATHS = [BASE_DIR / 'locale']
11 Django框架的时区配置
在settings.py⽂件的TIME_ZONE配置项中,可以查看到项⽬时区的配置信息。
Django使⽤时区来处理⽇期和时间,示例代码如下
# 时区
TIME_ZONE = 'UTC' # 时区, ⽤于设置Django项⽬的时区, 默认为UTC时区
TIME_ZONE = 'Asia/Shanghai'
# 是否使⽤时区感知 datetime 对象
USE_TZ = True
12 Django框架的静态⽂件配置
在settings.py⽂件的STATIC_URL配置项中,可以查看到项⽬静态⽂件的配置信息。所谓静态⽂件,就 是指图⽚、JavaScript脚本、样式表、⾳频、视频以及部分HTML⽂件等。示例代码如下:
# 静态⽂件URL
STATIC_URL = 'static/'
# 静态⽂件⽬录
STATICFILES_DIRS = [BASE_DIR / 'static',
]
# 静态⽂件收集⽬录
STATIC_ROOT = BASE_DIR / 'staticfiles'