Django商城项目笔记No.2项目准备工作

接着上篇开始,创建好工程之后,随之而来的是怎么配置工程,这篇文章记录如何进行相关的配置

1.pycharm打开工程,进行相关的配置

通过pycharm打开md_mall,然后进行下面的操作

Django商城项目笔记No.2项目准备工作 Python 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

Django商城项目笔记No.2项目准备工作 Python 第2张

Django商城项目笔记No.2项目准备工作 Python 第3张

Django商城项目笔记No.2项目准备工作 Python 第4张

2.调整工程目录

Django商城项目笔记No.2项目准备工作 Python 第5张

创建python包docslogsscripts

Django商城项目笔记No.2项目准备工作 Python 第6张

 

在子md_mall目录下创建包appslibssettingsutils

 Django商城项目笔记No.2项目准备工作 Python 第7张

并且在将settings.py拖到settings文件夹中改名字为dev.py

Django商城项目笔记No.2项目准备工作 Python 第8张

 3.在apps目录下创建应用users

Django商城项目笔记No.2项目准备工作 Python 第9张

Django商城项目笔记No.2项目准备工作 Python 第10张

4.修改工程导包路径

Django商城项目笔记No.2项目准备工作 Python 第11张

注册应用

Django商城项目笔记No.2项目准备工作 Python 第12张

 

修改manage.py中的settings.py的文件路径

Django商城项目笔记No.2项目准备工作 Python 第13张

 

增加启动参数

Django商城项目笔记No.2项目准备工作 Python 第14张

 

5.数据库与Redis配置

5.1 数据库

 

创建数据库

create database md_mall default charset=utf8;

并且创建用户

create user md_mall identified by 'md_mall'; 
grant all on md_mall.* to 'md_mall'@'%'; 
flush privileges;

Django商城项目笔记No.2项目准备工作 Python 第15张

配置数据库:

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

还要配置一个

Django商城项目笔记No.2项目准备工作 Python 第16张

5.2.redis

安装redis

pip install django-redis

配置redis

# redis
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
    "session": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

# 给admin站点使用的session
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"

注意:我们在项目中不在使用session保持用户状态,而使用jwt,那为啥还要配置redis存储session呢?是因为admin站点还要用session保持用户状态。

说明: 这里配置两个redisdefault是数据缓存到redissession就是保持sessionredis

6.日志与异常配置

6.1.时区配置

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

6.2.日志配置

# 日志配置
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': 'DEBUG',
            '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': 'DEBUG',  # 日志器接收的最低日志级别
        },
    }
}

6.3.异常配置

在utils文件夹下新建文件exceptions.py

from rest_framework.views import exception_handler as drf_exception_handler
import logging
from django.db import DatabaseError
from redis.exceptions import RedisError
from rest_framework.response import Response
from rest_framework import status

# 获取在配置文件中定义的logger,用来记录日志
logger = logging.getLogger('django')

def exception_handler(exc, context):
    """
    自定义异常处理
    :param exc: 异常
    :param context: 抛出异常的上下文
    :return: Response响应对象
    """
    # 调用drf框架原生的异常处理方法
    response = drf_exception_handler(exc, context)

    if response is None:
        view = context['view']
        if isinstance(exc, DatabaseError) or isinstance(exc, RedisError):
            # 数据库异常
            logger.error('[%s] %s' % (view, exc))
            response = Response({'message': '服务器内部错误'}, status=status.HTTP_507_INSUFFICIENT_STORAGE)

    return response

然后在配置文件里添加配置

REST_FRAMEWORK = {
    # 异常处理
    'EXCEPTION_HANDLER': 'meiduo_mall.utils.exceptions.exception_handler',
}

7.pycharm提示设置

Django商城项目笔记No.2项目准备工作 Python 第17张

 

Django商城项目笔记No.2项目准备工作 Python 第18张

7.1.js版本配置

打开一个js文件,发现有报错

Django商城项目笔记No.2项目准备工作 Python 第19张

这是因为这些语法是在js6版本才出现的,但是pycharm默认的是5.1.

所以修改如下:

Django商城项目笔记No.2项目准备工作 Python 第20张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄