项目配置

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'
]

六、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

  1. 连接虚拟机中的mysql , 使用root用户登陆
mysql -uroot -p
  1. 创建数据库
create database Dream_sql charset=utf8;
  1. 创建用户并授权
# '%' 代表所有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
  1. 引用至settings.py
DATABASES = {
    'default': {          #配置mysql数据信息,默认数据库
        'ENGINE': 'django.db.backends.mysql',       # 数据库引擎
        'OPTIONS': {
            #在 utils/dbs/mysql.cnf 目录下填写配置信息
            'read_default_file': 'utils/dbs/mysql.cnf',   
        },
    }
}
  1. 在项目目录下的 init.py中声明数据数信息(记得要 pip install pymysql)


    image.png
import pymysql
pymysql.install_as_MySQLdb()
  1. 将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 
上一篇下一篇

猜你喜欢

热点阅读