项目配置
2019-02-20 本文已影响0人
爱修仙的道友
settings.py 详解
一、BASE_DIR
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
# 此处 __file__ 指向settings.py,即'/home/pyvip/DreamBlog/Blog/settings.py'
# os.path.adspath()获取绝对路径,'/home/pyvip/DreamBlog/Blog/settings.py'
# os.path.dirname()获取父级目录,'/home/pyvip/DreamBlog/Blog'
# 再一次os.path.dirname()获取顶级目录 '/home/pyvip/DreamBlog'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
二、SECRET_KEY
# SECURITY WARNING: keep the secret key used in production secret!
# django 生成的随机密钥 与session认证机制和安全相关都会用到 非常重要
# 要创建一个环境变量去保存secret_key,并保证不让其上传到码云
SECRET_KEY = '*******************************************************'
三、DEBUG
# SECURITY WARNING: don't run with debug turned on in production!
# 当项目上传到码云或者进行正常工作后,要立即关闭,
# 因为有太多的日志信息、报错信息以及码云上的目录直接泄露
DEBUG = True
四、ALLOWED_HOSTS
# 允许访问的域名列表信息,
ALLOWED_HOSTS = ['*']
五、INSTALLED_APPS
# Application definition
# INSTALLED_APPS存放django自带的app以及自己添加的应用app
# contrib存放django自带的app模块
# auth存放自带认证应用
# contenttypes存放数据库模型的元数据
# sessions存放用户会话信息
# messages存放消息提醒的功能(消息提示)
# staticfiles用于查找静态目录路径信息,通过它找到static下的应用
INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'appname' #'book'
]
-
该django文件中放入了很多源码,请自行了解
django.png -
contrib 中放入了django自带的应用,与我们自己创建app类似
contrib.png -
app原码
app.png
六、MIDDLEWARE
#非常非常重要的中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware', #安全中间件,关于安全方面的认证(对请求头,请求方法进行认证)
'django.contrib.sessions.middleware.SessionMiddleware', #会话中间件,从用户端取出session_id,与数据库进行对比判断
'django.middleware.common.CommonMiddleware', #判断是否是www的域名或者没有网址结尾没有/会自动加上
'django.middleware.csrf.CsrfViewMiddleware', #判断是否是跨站请求的中间件
'django.contrib.auth.middleware.AuthenticationMiddleware', #认证的中间件
'django.contrib.messages.middleware.MessageMiddleware', #消息提醒的功能的中间件
'django.middleware.clickjacking.XFrameOptionsMiddleware', #关于安全防护的中间件
]
七、ROOT_URLCONF
# 指向全局路由表信息
ROOT_URLCONF = 'Gitcode.urls'
八、TEMPLATES
TEMPLATES = [
{
#模板引擎 django后台的一个DjangoTemplates模板引擎,将Templates里的文件转换为html文件,返回给前端,前端浏览器可以正常显示
'BACKEND': 'django.template.backends.django.DjangoTemplates',
#此处为指定全局项目存放模板的路径,DIRS 定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。将templates放在主项目目录下.
'DIRS': [os.path.join(BASE_DIR, 'templates')],
#APP_DIRS告诉模板引擎是否应该进入每个已安装的应用中查找模板,值为True则模板会去安装了的app下面的templates文件夹查找模板。。所以我们也可以在每个app的里面创建模板目录templates存放模板,这种方式需要将这个app添加到setting.py文件的INSTALLED_APPS列表中.
'APP_DIRS': True,
#针对模板引擎做一些额外的配置信息
'OPTIONS': {
#上下文加载器context_processors,(上下文传参)
'context_processors': [
#渲染报错信息传递到context_processors,最终将报错信息显示到到网页上
'django.template.context_processors.debug',
#渲染请求信息传递到context_processors
'django.template.context_processors.request',
#渲染认证信息传递到context_processors
'django.contrib.auth.context_processors.auth',
#渲染消息提示信息传递到context_processors
'django.contrib.messages.context_processors.messages',
],
#在所有的html,默认添加{% load static %}
'builtins':['django.templatetags.static']
},
},
]
九、WSGI_APPLICATION
#指定wsgi服务器,django自带run server的测试服务器当中所提供的一个APPLICATION,让run server的测试服务器与django进行沟通的桥梁
WSGI_APPLICATION = 'internet_forum.wsgi.application'
十、DATABASES
- 连接虚拟机中的mysql , 使用root用户登陆
mysql -uroot -p
- 创建数据库
create database Dream_sql charset=utf8;
- 创建用户并授权
# '%' 代表所有ip .*代表所有权限
mysql> grant all privileges on Dream_sql.* to 'liuwei'@'%' identified by 'qwe123';
mysql> flush privileges;
4.加载数据库配置
# 在根目录创建配置文件夹utils 在其下创建dbs ,在dbs下创建mysql.cnf文件,在其中添加数据库配置信息
[client]
database = Dream_sql
user = liuwei
password = qwe123
host = 127.0.0.1
port = 3306
# default-character-set = utf8mb4 最新
default-character-set = utf8
mysql.cnf.png
- 引用至settings.py
DATABASES = {
'default': { #配置mysql数据信息,默认数据库
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'OPTIONS': {
#在 utils/dbs/mysql.cnf 目录下填写配置信息
'read_default_file': 'utils/dbs/mysql.cnf',
},
}
}
-
在项目目录下的 init.py中声明数据数信息(记得要 pip install pymysql)
image.png
import pymysql
pymysql.install_as_MySQLdb()
-
将mysql.cnf写入.gitignore文件中,令其不上传至码云
忽略上传.png
十一、redis缓存数据库配置(pip install django-redis)
# 配置redis缓存
# 在settings.py文件中指定redis配置
CACHES = {
# 默认redis数据库 -- default
"default": {
"BACKEND": "django_redis.cache.RedisCache", #引擎
"LOCATION": "redis://127.0.0.1:6379/0", #0 代表第一个数据库,端口默认6379
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
# 指定redis数据库 -- "verify_codes"
#保存图片以及短信验证码
"verify_codes": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1", #1 代表第一个数据库,
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
}
十二、AUTH_PASSWORD_VALIDATORS
# Password validation
# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators
# 密码校验器
AUTH_PASSWORD_VALIDATORS = [
{ #用户属性相似的校验,用户名、密码等
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{ #最小长度和最大长度校验器
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{ #其他校验
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{ #数字型密码校验器(判断密码简单等)
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
十三、配置日志器
# 在setting.py文件中加入如下配置:
# 配置日志器,记录网站的日志信息
LOGGING = {
# 版本
'version': 1,
# 是否禁用已存在的日志器
'disable_existing_loggers': False,
# 格式
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
},
},
# 过滤器
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
# 控制台格式化
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': {
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, "logs/fornum.log"),
# 日志文件的位置(需要在根目录下创建logs文件夹用于存放日志文件)
'maxBytes': 300 * 1024 * 1024, #最大存储量300M日志信息
'backupCount': 10, # 此文件夹只能存放10个日志文件,多了会轮询覆盖
'formatter': 'verbose'
},
},
'loggers': { #项目所定义的日志器,上面都是配置信息
'django': { # 定义了一个名为django的日志器
'handlers': ['console', 'file'], #通过这两个控制台和文件来记录日志
'propagate': True, #切换轮转,当超10个日志文件会覆盖
'level': 'INFO', # 日志器接收的最低日志级别
},
}
}
十四、时区配置
# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
十五、静态文件配置
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/
# css img js font
STATIC_URL = '/static/'
# 目的:当我们url以static开头,会访问静态文件{% static url %}
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'), # 根目录下创建static 用于存放静态文件
]
十六、上传至码云
(Dream) pyvip@vip:~/DreamBlog$ git status
(Dream) pyvip@vip:~/DreamBlog$ git add .
(Dream) pyvip@vip:~/DreamBlog$ git status
(Dream) pyvip@vip:~/DreamBlog$ git commit -m '完成项目基本配置,可以进行开发'
(Dream) pyvip@vip:~/DreamBlog$ git push origin master