美文网首页
Django项目初始配置

Django项目初始配置

作者: 春风淳如酒 | 来源:发表于2018-07-11 10:12 被阅读32次

    1. 修改settings/dev.py 文件中的路径信息

    我们将Django的应用放到了 工程目录/meiduo_mall/apps目录下,如果创建一个应用,比如users,那么在配置文件的INSTALLED_APPS中注册应用应该如下:

    INSTALLED_APPS = [
        ...
        'meiduo_mall.apps.users.apps.UsersConfig',
    ]
    
    

    为了还能像如下方式简便的注册引用,我们需要向Python解释器的导包路径中添加apps应用目录的路径。

    INSTALLED_APPS = [
        ...
        'users.apps.UsersConfig',
    ]
    
    

    我们将配置文件改为放在settings子目录下,所以 配置文件中的BASE_DIR指向的变为了meiduo/meiduo_mall/meiduo_mall

    使用sys.path添加<BASE_DIR>/apps目录,即可添加apps应用的导包路径。

    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    # 添加导包路径
    import sys
    sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
    
    

    2. INSTALLED_APPS

    在INSTALLED_APPS中添加rest_framework

    INSTALLED_APPS = [
        ...
        'rest_framework',
    ]
    
    

    3. 数据库

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

    注意:

    记得在meiduo/meiduo_mall/__init__.py文件中添加

    import pymysql
    
    pymysql.install_as_MySQLdb()
    
    

    4. Redis

    安装django-redis,并配置

    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://10.211.55.5:6379/0",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            }
        },
        "session": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://10.211.55.5:6379/1",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            }
        }
    }
    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    SESSION_CACHE_ALIAS = "session"
    
    

    除了名为default的redis配置外,还补充了名为session的redis配置,分别使用两个不同的redis库。

    同时修改了Django的Session机制使用redis保存,且使用名为'session'的redis配置。

    此处修改Django的Session机制存储主要是为了给Admin站点使用。

    关于django-redis 的使用,说明文档可见http://django-redis-chs.readthedocs.io/zh_CN/latest/

    5. 本地化语言与时区

    LANGUAGE_CODE = 'zh-hans'
    
    TIME_ZONE = 'Asia/Shanghai'
    
    

    6. 日志

    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(os.path.dirname(BASE_DIR), "logs/meiduo.log"),  # 日志文件的位置
                'maxBytes': 300 * 1024 * 1024,
                'backupCount': 10,
                'formatter': 'verbose'
            },
        },
        'loggers': {
            'django': {  # 定义了一个名为django的日志器
                'handlers': ['console', 'file'],
                'propagate': True,
            },
        }
    }
    
    

    7. 异常处理

    修改Django REST framework的默认异常处理方法,补充处理数据库异常和Redis异常。

    新建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',
    }
    

    相关文章

      网友评论

          本文标题:Django项目初始配置

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