声明:以下内容均为我个人的理解,如果发现错误或者疑问可以联系我共同探讨
学习Django可以从Django配置文件的各项开始,由简入深的了解其作用,从而一步一步学习。本篇文章主要是介绍各项的作用以及如何配置,可以根据需求按需配置。
ABSOLUTE_URL_OVERRIDES
作用:将应用的模型字符串映射到采用模型对象并返回其url,基于get_absolute_url方法。无论实际模型类名称的大小写如何,此设置中使用的模型名称均应全部小写。
ADMINS
作用:用于接收代码错误的人员列表,列表中的元素格式为(全名,电子邮箱)
BASE_DIR
作用:以项目根路径为基础衍生其他文件
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
可能这样还不太清楚,将__file__换成settings.py,可以看出来BASE_DIR是manage.py所在的目录,即整个项目的根目录
SECRET_KEY
作用:校验,主要用于表单、session、csrf
SECRET_KEY = "adsasdasdsafdasfldasfklasdlfnlasdnfklnasdfklnasldfklkdasf"
DEBUG
作用:当开启时,运行出现bug会在前端直接显示,开发,测试过程可以开启
DEBUG = True
ALLOWED_HOSTS
作用:在开发的时候可以使用*,当项目上线后需要更换为指定的主机(域名和ip都可以)
ALLOWED_HOSTS = []
INSTALLED_APPS
作用:将独立的应用或模块接入Django(注意应用名称或者模块名称必须是唯一的)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
通常INSTALLED_APPS默认包含以下Django自带的应用
django.contrib.admin:管理员站点,可以通过admin管理项目(数据、用户、权限等),使用admin必须完成以下配置
他依赖django.contrib.auth、django.contrib.contenttypes、django.contrib.sessions、django.contrib.messages四个模块
MIDDLEWARE设置必须包括 django.contrib.auth.middleware.AuthenticationMiddleware并且django.contrib.messages.middleware.MessageMiddleware
在项目url配置中必须加入admin
urls.py
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
可以使用django-admin createsuperuser创建管理员用户
django.contrib.auth:认证授权系统。主要负责校验用户信息与用户权限,由以下部分组成
用户:用户管理
权限:以二进制的形式标识指定用户是否可以执行的特殊任务
组:管理多个用户的权限
可配置的密码哈希话系统
为登录用户或限制内容提供表单和视图工具
可插拔的后端系统
需要注意的是它不提供密码强度检查、限制登录尝试、第三方身份验证,对象级权限
django.contrib.contenttypes:内容类型框架,他可以跟踪Django驱动的项目中安装的所有模型,为模型提供高级的通用界面
django.contrib.sessions:会话框架
django.contrib.messages:消息框架
staticfiles:管理静态文件框架
除了这些常见的自带应用外,在我们使用自己注册的应用和第三方模块时,记得第一时间来这里注册,否则会用不了哦
MIDDLEWARE
作用:中间件是Django请求/响应处理的钩子框架,用于改变Django的输入或输出
中间件可以放在Python路径上的任何地方,可以自己编写中间件,中间件可以是函数也可以是类。
函数形式的中间件
def simple_middleware(get_response):
# 首次配置和初始化
def middleware(request):
# 每个请求之前或调用视图函数之前执行的代码
response = get_response(request)
# 每个响应、请求或者调用视图函数之后执行的代码
return response
return middleware
类形式的中间件
def __init__(self, get_response):
self.get_response = get_response
# 首次配置和初始化
def __call__(self, request):
# 每个请求之前或调用视图函数之前执行的代码
response = self.get_response(request)
# 每个响应、请求或者调用视图函数之后执行的代码
return response
上述方法中调用get_response方法并不是实际视图中的,而是处理程序的包装方法,它负责应用视图中间件,调用具有适当的URL参数的视图,并应用模板响应和第三方中间件。
在使用类形式的中间件时,__init__方法必须接受get_response参数,还可以初始化中间件的一些局部状态。
想使用中间件就必须在settings.py文件中的MIDDLEWARE中激活。激活的方式是使用字符串表示指向中间件完整的Python路径
在Django中MIDDLEWARE可以为空,但是强烈建议至少激活CommonMiddleware
由于某些中间件也会依赖其他中间件所以中间件在MIDDLEWARE中的顺序很重要,Django会按自上而下的顺序调用中间件
ROOT_URLCONF
作用:Django在处理请求时会最先从此处寻找url
需要注意的是,此处的路径是基于BASE_DIR的路径
TEMPLATES
作用:在Django中使用模板引擎的设置列表,列表中每个元素都是一个字典,字典里配置模板引擎
常用的配置参数:
BACKEND
:项目使用的模板引擎,Django内置了两个
DIRS
:模板文件夹的位置APP_DIRS
:模板引擎是否在已安装的应用中讯在模板源文件OPTIONS
:传给后端模板的额外参数WSGI_APPLICATION
作用:用于调式Django程序的内置服务器,
DATABASES
在mysite/mysite/settings.py中,默认的数据库为SQLite,还支持PostgreSQL、mysql、oracle等其他第三方(这些非官方后端支持的Django版本和ORM功能差异很大。有关这些非官方后端的具体功能的查询以及任何支持查询,应该针对每个第三方项目提供的支持渠道)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
django.db.backends.postgresql、django.db.backends.mysql、django.db.backends.oracle、第三方数据库
NAME,数据库名称,如果使用SQLite,他会在根目录生成一个数据库文件
当不使用SQLite时,还会有一下常用参数,其他参数可以查阅文档DATABASES
NAME:数据库名字
USER:数据库的用户名
PASSWORD:数据库的密码
HOST:数据库的主机
PORT:数据库的端口
OPTIONS:连接到数据库时要使用的其他参数。可用参数取决于数据库后端。
TEST:测试数据库
测试数据库也具备一些设置,也是采用键值对的方式对数据库进行设置
False
如果没有任何带有测试类,可以将其设置为加快创建时间。'template0'
)的名称。False
,则测试表空间将不会在测试开始时自动创建,也不会在测试结束时自动删除。False
,则不会在测试开始时自动创建测试用户,并在测试结束时自动将其删除。'test_' + USER
'test_' + USER
'test_' + USER + '_temp'
TBLSPACE + '.dbf'
TBLSPACE_TMP + '.dbf'
其他的配置:
0
在每个请求结束时关闭数据库连接-Django的历史行为-并 None
用于无限的持久连接。
DATABASE_ROUTERS
作用:执行数据库查询时将用来确定要使用哪个数据库的路由器列表。
DATA_UPLOAD_MAX_NUMBER_FIELDS
作用:调用SuspiciousOperation检查GET或POST接受的最大值,当设为None时禁用检查
DATE_FORMAT
作用:在任何地方显示日期字段的默认格式。
AUTH_PASSWORD_VALIDATORS
作用:用于检查用户密码强度的验证器列表
LANGUAGE_CODE
作用:项目语言,默认为‘en-us’
TIME_ZONE
作用:一个字符串表达的时区默认为’UTC’
USE_I18N
作用:指定是否启用Django的翻译系统,默认为True
USE_L10N
作用:指定默认情况下是否启用数据本地化格式,默认为True
USE_TZ
作用:指定日期时间默认情况下是否支持时区
STATIC_URL
作用:引用位于静态文件时使用的URL
STATIC_ROOT
作用:在部署时收集静态文件的绝对路径