美多项目

二、 配置环境

1. 配置开发环境

项目环境分为开发环境生成环境

  • 开发环境:用于编写和调试项目代码。
  • 生产环境:用于项目线上部署运行。

1.1 新建配置文件

1)准备配置文件目录

  • 在工程同名文件夹下新建包,命名为settings,作为配置文件目录

2)准备开发和生产环境配置文件

  • 在配置包settings中,新建开发dev.py和生产环境prod.py配置文件

3)准备开发环境配置内容

  • 将默认的配置文件settings.py中的内容拷贝至 dev.py
    美多项目_第1张图片

1.2 指定开发环境配置文件

美多项目_第2张图片
配置完成后:运行程序,测试结果。

1.3 配置Jinja2模块引擎

  1. 安装Jinja2扩展包

    pip install Jinja2==2.10.1
    
  2. 配置Jinja2模板引擎

    # 打开dev.py文件,找到模板配置项:TEMPLATES,修改文件中的模板配置引擎
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.jinja2.Jinja2',  # 配置jinja2模板引擎
            'DIRS': [os.path.join(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',
                ],
            },
        },
    ]
    
  3. 工程同名目录下新建文件夹templates,用以放置模板文件
    美多项目_第3张图片

1.4 补充Jinja2模板引擎环境

  1. 在工程同名目录文件下新建包,命名为:utils,在包内创建jinja2_env.py文件作为Jinja2模板引擎环境配置文件
    美多项目_第4张图片

  2. 编写Janja2模块引擎环境配置代码

       from jinja2 import Environment
        from django.contrib.staticfiles.storage import staticfiles_storage
        from django.urls import reverse
        
        
        def jinja2_environment(**options):
            env = Environment(**options)
            env.globals.update({
                'static': staticfiles_storage.url,
                'url': reverse,
            })
            return env
    
  3. 加载Jinja2模板引擎环境

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.jinja2.Jinja2',  # jinja2模板引擎
            'DIRS': [os.path.join(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',
                ],
                # 补充Jinja2模板引擎环境
                'environment': 'meiduo_mall.utils.jinja2_env.jinja2_environment', 
            },
        },
    ]
    

    配置完成后:运行程序,测试结果。

1.4 配置MySQL数据库

项目数据存储服务采用MySQL数据库

  1. 新建MySQL数据库
    1)新建MySQL数据库:meiduo

    # create database 数据库名 charset=utf8;
    create database meiduo charset=utf8;
    

    2)新建MySQL用户[可选]

    # create user 用户名 identified by '密码';
    create user meiduo identified by '123456';
    

    3)授权meiduo用户访问meiduo数据库[可选]

    # grant all on 数据库名.* to '用户名'@'%';    
    grant all on meiduo.* to 'meiduo'@'%';  #授权'meiduo'用户全部权限
    

    4)授权结束后刷新特权

    flush privileges;
    
  2. 配置MySQL数据库
    打开dev.py配置文件,找到数据库配置项:DATABASES,修改配置如下:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql', # 数据库引擎
            'HOST': '127.0.0.1', # 数据库主机
            'PORT': 3306, # 数据库端口
            'USER': 'meiduo', # 数据库用户名
            'PASSWORD': '123456', # 数据库用户密码
            'NAME': 'meiduo' # 数据库名字
        },
    }
    

    可能出现的错误: Error loading MySQLdb module: No module named 'MySQLdb'.
    出现此错误的原因:

    1. Django中操作MySQL数据库需要驱动程序MySQLdb
    2. 目前项目虚拟环境中没有驱动程序MySQLdb

    解决办法:

    • 安装PyMySQL扩展包
    • 因为MySQLdb只适用于Python2.x的版本,Python3.x的版本中使用PyMySQL替代MySQLdb
  3. 安装PyMySQL扩展包
    1)安装驱动程序

    pip install PyMySQL==0.9.3
    

    2)在工程同名子目录的__init__.py文件中,添加如下代码:

    from pymysql import install_as_MySQLdb
    
    install_as_MySQLdb()
    

配置完成后:运行程序,测试结果。

1.5 配置Redis数据库

项目数据缓存服务采用Redis数据库

  1. 安装django-redis扩展包
    1)安装django-redis扩展包

    pip install django-redis==4.10.0
    

    2)django-redis使用说明文档:点击进入文档

  2. 配置Redis数据库
    打开dev.py配置文件,在文件最下方插入以下数据:

     CACHES = {
         "default": { # default:默认的Redis配置项,采用0号Redis库
             "BACKEND": "django_redis.cache.RedisCache",
             "LOCATION": "redis://127.0.0.1:6379/0",
             "OPTIONS": {
                 "CLIENT_CLASS": "django_redis.client.DefaultClient",
             }
         },
         "session": { # session:状态保持的Redis配置项,采用1号Redis库
             "BACKEND": "django_redis.cache.RedisCache",
             "LOCATION": "redis://127.0.0.1:6379/1",
             "OPTIONS": {
                 "CLIENT_CLASS": "django_redis.client.DefaultClient",
             }
         },
     }
     SESSION_ENGINE = "django.contrib.sessions.backends.cache"  #修改session存储机制使用Redis保存
     SESSION_CACHE_ALIAS = "session"  # 使用名为"session"的Redis配置项存储session数据
    

    配置完成后:运行程序,测试结果.

1.6 配置工程日志

项目的日志记录采用logging模块

  1. 配置工程日志
    打开dev.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在debug模式下才输出日志
                '()': 'django.utils.log.RequireDebugTrue',
            },
        },
        'handlers': {  # 日志处理方法
            'console': {  # 向终端中输出日志
                'level': 'INFO',
                'filters': ['require_debug_true'],
                'class': 'logging.StreamHandler',
                'formatter': 'simple'
            },
            'file': {  # 向文件中输出日志
                'level': 'INFO',
                'class': 'logging.handlers.RotatingFileHandler',
                'filename': os.path.join(os.path.dirname(BASE_DIR), 'logs/meiduo.log'),  # 日志文件的位置
                'maxBytes': 300 * 1024 * 1024,
                'backupCount': 10,
                'formatter': 'verbose'
            },
        },
        'loggers': {  # 日志器
            'django': {  # 定义了一个名为django的日志器
                'handlers': ['console', 'file'],  # 可以同时向终端与文件中输出日志
                'propagate': True,  # 是否继续传递日志信息
                'level': 'INFO',  # 日志器接收的最低日志级别
            },
        }
    }
    
  2. 准备日志文件目录
    工程目录下新建logs文件夹,作为日志文件存放目录
    美多项目_第5张图片

  3. Git管理工程日志
    提示1:开发过程中,产生的日志信息不需要代码仓库进行管理和记录。
    美多项目_第6张图片

    提示2:建立代码仓库时,生成的忽略文件中已经默认忽略掉了 *.log 美多项目_第7张图片

    问题:

    • logs文件目录需求被Git仓库记录和管理。
    • 当把 *.log 都忽略掉后,logs文件目录为空。
    • 但是,Git是不允许提交一个空的目录到版本库上的。

    解决:

    • 在空文件目录中建立一个 .gitkeep 文件,然后即可提交
    • 美多项目_第8张图片
  4. 知识要点
    1)本项目最低日志等级设置为:INFO
    2)创建日志记录器的方式:

    logger = logging.getLogger('django')
    

    3)日志记录器的使用:

    logger.info('测试logging模块info')
    

    4)在日志loggers选项中可以指定多个日志记录器

1.7 配置前端静态文件

项目中需要使用静态文件,比如css、images、js 等等。

  1. 准备静态文件
    把前端静态文件static复制到项目同名文件夹下
    美多项目_第9张图片

  2. 指定静态文件加载路径
    打开dev.py配置文件,找到静态文件配置项:STATIC_URL,在其下方插入数据STATICFILES_DIRS

    STATIC_URL = '/static/'
    
    # 配置静态文件加载路径
    STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
    

你可能感兴趣的:(美多商城项目)