文章目录
- 大纲
- **SECRET_KEY**:密匙
- **DEBUG**:调试
- **ALLOWED_HOSTS**:域名访问权限
- **INSTALLED_APPS**:已安装的应用程序
- **MIDDLEWARE**:中间件
- **ROOT_URLCONF**:根urls
- **TEMPLATES**:模板
- **WSGI_APPLICATION**:配置Django项目的WSGI服务路径
- **DATABASES**:数据库
- **AUTH_PASSWORD_VALIDATORS**:启用密码验证
- **LANGUAGE_CODE**:语言
- **TIME_ZONE**:时区
- **USE_I18N**:国际化
- **USE_L10N**:
- **USE_TZ**:系统时区
- **STATIC_URL**:
- **STATICFILES_DIRS**:
- **DEFAULT_AUTO_FIELD**:
接上篇文章:
自动化测试平台搭建系列(2)——新手学习Django,创建第一个“APP”
大纲
打开settings.py文件后会看到有以下几个配置项:
BASE_DIR
SECRET_KEY
DEBUG
ALLOWED_HOSTS
INSTALLED_APPS
MIDDLEWARE
ROOT_URLCONF
TEMPLATES
WSGI_APPLICATION
DATABASES
AUTH_PASSWORD_VALIDATORS
LANGUAGE_CODE
TIME_ZONE
USE_I18N
USE_L10N
USE_TZ
STATIC_URL
DEFAULT_AUTO_FIELD
接下来就对它一一讲讲一下(视频+百度+请教前辈,不对之处,请多多指出,我会继续更新的)
首先我还是百度翻译底层是啥意思吧
BASE_DIR:基本目录
用于绑定项目文件位置的绝对路径(动态计算出来的),所有文件夹都依赖于此路径
主要通过os模块读取当前项目在系统的具体路径,该代码在创建项目时自动生成,这个默认设置,不要动它就对了!!!
SECRET_KEY:密匙
主要用于重要数据的加密处理,提高系统安全性,避免遭到攻击者恶意破坏。密钥主要用于用户密码,CSRF机制和会话Session等数据加密
据说没啥用,可以随便改,但是个人建议,也不要动它就行了,默认万岁
DEBUG:调试
这个就很好理解了(终于遇到一个认识的单词)
值为布尔类型,开发阶段设置为True,即会自动检测代码是否发生修改,根据检测结果是否刷新重启系统
如果开启了DEBUG模式,那么以后我们修改了Django项目的代码,然后按下ctrl+s,那么Django就会自动的给我们重启项目,不需要手动重启。
如果以后Django项目中的代码出现bug了,那么在浏览器中和控制台会打印出错信息。否则的我们很难寻找到bug的位置,也不方便调试代码。
在生产环境中,禁止开启DEBUG = True,因为当你的网站出错误时,别人能看到你的源代码,而我们也不需要给用户看到这些错误信息。所以需要关掉DEBUG = True,即设置DEBUG = False
如果设置了DEBUG = False,那么就必须设置settings.py中的ALLOWED_HOSTS,需要设置为服务器的ip地址,客户端才可正常访问
也就是说,测试环境下开启debug,线上环境关闭debug
ALLOWED_HOSTS:域名访问权限
这个变量是用来设置以后别人只能通过这个变量中的ip地址或者域名来进行访问。
当DEBUG=True时,切ALLOWED_HOSTS为空时,只允许以localhost 或 127.0.0.1 在浏览器上访问
当DEBUG=False时,ALLOWED_HOSTS为必填项,如果想允许所有 域名访问,可设置成 ALLOWED_HOSTS=["*"]
INSTALLED_APPS:已安装的应用程序
告诉Django有哪些App。Django内置应用功能:admin、auth和session等配置信息。
admin:内置后台管理系统。
auth:内置的用户认证系统。
contenttypes:记录项目中所有model元数据(Django的ORM框架)
session:Session 会话功能,用于标识当前访问网站的用户身份,记录相关用户信息。
messages:消息提示功能。
staticfiles:查找静态资源路径。
app_demo:是我自己创建的APP(就上面那个。。。)
默认已有 如果没有只要添加app名称即可 例如: ‘app_demo’
新建的应用都要在这里添加
MIDDLEWARE:中间件
这是我们要使用的中间件的列表
django的中间件,自己写的中间件要在这里填写路径注册,才会生效
例如在项目中的md文件夹下md.py文件中的M1与M2两个中间件
注意:自己写的中间件,配置要写在系统中的后面
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' ,
'md.md.M1' ,
'md.md.M2' ,
]
这里暂时默认设置,后期如果真需要添加其他中间件再改这里
ROOT_URLCONF:根urls
主路由,也就是项目的主urls(根urls),表明Django主路由的位置
表示根URLconf的完整Python导入路径的字符串
默认值
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',
],
},
},
]
指定模板配置信息
这是对我们的template的选项,template用于存放我们的html文件。详细的选项可以参照DjangoTemplates官方文档
WSGI_APPLICATION:配置Django项目的WSGI服务路径
正式启动的时候会用
DATABASES:数据库
主要用于数据库的相关配置
如果使用django的默认sqlite3数据库则不需要改
如果使用mysql数据库需要将上述数据库注掉修改如下
(我比较喜欢使用MySQL)
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql' ,
'NAME' : 'blog' , #你的数据库名称 数据库需要自己提前建好
'USER' : 'root' , #你的数据库用户名
'PASSWORD' : '', #你的数据库密码
'HOST' : '', #你的数据库主机,留空默认为localhost
'PORT' : '3306' , #你的数据库端口
}
}
AUTH_PASSWORD_VALIDATORS:启用密码验证
用于检查用户密码强度的验证器列表,在为空的情况下就接受任意强度的用户密码
LANGUAGE_CODE:语言
中文: LANGUAGE_CODE = ‘zh-hans’
Django项目的语言代码,默认值为en-us也就是英语,这里我选择的是zh-hans也就是我们的汉语。选择之后Django的admin界面就将变为汉语。
TIME_ZONE:时区
时区,默认值是UTC。当USE_TZ为TRUE时,无论TZ设置为何值Django都会使用系统默认的时区,例如要使用上海的时区则需将USE_TZ=FALSE,TIME_ZONE=‘Asia/Shanghai’
世界标准时区:TIME_ZONE = ‘UTC’
USE_I18N:国际化
Django允许开发者指定要翻译的字符串,也可以让访问者进行语言选择
USE_L10N:
是否选择启用数据的本地化
如果USE_L10N设置为True,则区域设置指定的格式具有更高的优先级
admin 的时候想显示格式化时间,必须把 USE_L10N = False
USE_TZ:系统时区
TimeZone,如果开启了Time Zone功能,则所有的存储和内部处理,甚至包括直接print显示全都是UTC的。只有通过模板进行表单输入/渲染输出的时候,才会执行UTC本地时间的转换
STATIC_URL:
静态目录的所有文件,存放css,js等文件
STATICFILES_DIRS:
将我们自己的static文件加入static路径
DEFAULT_AUTO_FIELD:
与STATIC_URL类似,存放用户上传的文件
session存储的相关配置
数据库配置(默认)
Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session 表中。
配置 settings.py
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认)
SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)
缓存配置
COOKIE与SESSION设置
配置 settings.py
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎
SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串
SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名
SESSION_COOKIE_SECURE = False # 是否Https传输cookie
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输
SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期
SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存