美文网首页
项目配置

项目配置

作者: 爱修仙的道友 | 来源:发表于2019-02-20 17:49 被阅读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

    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 
    

    相关文章

      网友评论

          本文标题:项目配置

          本文链接:https://www.haomeiwen.com/subject/wkscyqtx.html