Python Django 구축 사이트 프로 세 스 도해

1.Django REST 프레임 워 크 프로젝트 만 들 기
1.1 수 동 으로 프로젝트 폴 더 만 들 기
1.2 프로젝트 폴 더 에 들 어가 명령 실행:django-admin startproject web프로젝트 프로젝트 디 렉 터 리 생 성
1.3 디 렉 터 리 구조 추가
app Django 를 저장 하 는 응용 libs 는 제3자 의 라 이브 러 리 파일 settings 를 저장 하고 프로필 을 저장 하 는 디 렉 터 리 로 개발 dev 와 온라인 produtils 저장 프로젝트 가 정의 하 는 공공 함수 나 클래스 등 docs 로 나 뉘 어 설명 문서 자 료 를 저장 합 니 다.
2.
프로필 수정
2.1 Django 프로젝트 의 settings.py 파일 을 새로 만 든 settings 디 렉 터 리 에 복사 하고 dev.py 로 이름 을 바 꾸 고 입구 파일 manage.py 파일 의 설정 파일 경 로 를 수정 합 니 다.

2.2 settings/dev.py 파일 의 경로 정 보 를 수정 합 니 다.
우 리 는 Django 의 응용 을 프로젝트 디 렉 터 리 에 넣 었 습 니 다./webprocject/apps 디 렉 터 리 에서 users 와 같은 애플 리 케 이 션 을 만 들 면 설정 파일 의 INSTALLEDAPPS 에 등 록 된 앱 은 다음 과 같 아야 합 니 다.

INSTALLED_APPS = [
  ...
  'web_project.apps.users.apps.UsersConfig',
]
다음 과 같은 방식 으로 간편 하 게 인용 을 등록 하기 위해 서 는 Python 해석 기의 패키지 경로 에 apps 응용 디 렉 터 리 경 로 를 추가 해 야 합 니 다.

INSTALLED_APPS = [
  ...
  'users.apps.UsersConfig',
]
설정 파일 을 settings 하위 디 렉 터 리 로 변경 하기 때문에 설정 파일 의 BASEDIR 가 가리 키 는 프로젝트 디 렉 터 리 로 변경/웹project/web_project/web_project.
sys.path 로/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.3INSTALLED_APPS
pip install djangorestframework
INSTALLED 에서APPS 에 rest 추가framework

INSTALLED_APPS = [
  ...
  'rest_framework',
]
2.4 데이터베이스 설정
mysql 데이터베이스 사용

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'HOST': '127.0.0.1', #      
    'PORT': 3306, #      
    'USER': 'caicai', #       
    'PASSWORD': 'caicai', #        
    'NAME': 'web_project' #      
  }
}
주의:
기억 하기/웹project/web_project/__init__.py 파일 에 추가
import pymysqlpymysql.install_as_MySQLdb()
my sql 데이터베이스 에 들 어가 프로젝트 에 데이터 베 이 스 를 만 듭 니 다.

create user caicai identified by 'caicai';        meiduo,    meiduo ( identified by   )
grant all on web_project.* to 'caicai'@'%';   web_project        (web_project.*)     (all)   caicai    ip        ('caicai'@'%')
flush privileges;         
2.5 django-redis 설치 및 설정
명령 실행 설치:pip install 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 설정 외 에 세 션 이라는 redis 설정 도 추가 하여 각각 두 개의 서로 다른 redis 라 이브 러 리 를 사용 합 니 다.
Django 의 Session 메커니즘 을 수정 하여 redis 로 저장 하고'session'이라는 redis 설정 을 사용 합 니 다.
Django 의 Session 메커니즘 저장 소 를 수정 하 는 것 은 주로 Admin 사이트 에 사용 하기 위해 서 입 니 다.
django-redis 의 사용 에 대해 설명 문 서 를 볼 수 있 습 니 다http://django-redis-chs.readthedocs.io/zh_CN/latest/
2.6 현지 화 언어 와 시간 대
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
2.7 로그

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/web_project.log"), #        
      'maxBytes': 300 * 1024 * 1024,
      'backupCount': 10,
      'formatter': 'verbose'
    },
  },
  'loggers': {
    'django': { #        django    
      'handlers': ['console', 'file'],
      'propagate': True,
    },
  }
}
2.8 이상 처리
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': 'web_project.utils.exceptions.exception_handler',
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기