Python Django 구축 사이트 프로 세 스 도해
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 로
# 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_APPSpip 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',
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.