做一个Django项目(1.1、立项)

  1. 创建项目
    1. 码云创建仓库
    2. 添加ssh
      1. 生成ssh公钥 ssh-keygen -t rsa -C "邮箱"
      2. 拷贝到码云
    3. 下载项目 git clone 下载地址
    4. 使用命令创建项目
      # django-admin startproject 工程名称
      django-admin startproject md

       

  2. 修改配置文件位置
    1. 更改配置文件位置
      1. 在项目目录下创建sttings文件并在sttings下创建dev.py作为配置文件
      2. 复制原始sttings.py内容到dev.py
      3. 更改manage.py 文件
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "md.settings.dev")
  3. 添加前端文件
  4. 更改配置
    1. 为了将所有模块统一存放在apps目录下添加导包路径
      # 添加导包路径
      import sys
      sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
    2. 使用rest_framework
      1. pip install  djangorestframework
      2. 注册:
        # INSTALLED_APPS 中添加 
        
        INSTALLED_APPS = [
            ...
            'rest_framework',
        ]
    3.  更改数据库配置使用Mysql和Redis
      1. 导包
        pip install PyMySQL
        pip install django-redis
        pip install redis

         

      2. md/md/__init__.py文件中添加 
        import pymysql
        
        pymysql.install_as_MySQLdb()
      3. 更改数据库链接 
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'HOST': '127.0.0.1',  # 数据库主机
                'PORT': 3306,  # 数据库端口
                'USER': 'md',  # 数据库用户名
                'PASSWORD': 'md',  # 数据库用户密码
                'NAME': 'md'  # 数据库名字
            }
        }
        
      4. 更改缓存配置使用Redis
        1.  配置
          # 安装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"
  5. 更改语言和时区
    LANGUAGE_CODE = 'zh-hans'
    
    TIME_ZONE = 'Asia/Shanghai'
  6. 配置日志
    1. 在项目统计目录下添加logs目录用于存放日志
    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': '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',  # 日志器接收的最低日志级别
              },
          }
      }
       
  7. 异常
    1. 修改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
    2.  添加配置
      REST_FRAMEWORK = {
          # 异常处理
          'EXCEPTION_HANDLER': 'md.utils.exceptions.exception_handler',
      }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值