django 의 setting 최 적 설정 소결

14794 단어 djangosetting
Django settings 상세 설명
1.기초
DJANGO_SETTING_MODULE 환경 변수:settings 모듈 을 python 에서 찾 을 수 있 는 디 렉 터 리 에 포함 시 킵 니 다.개발 상황 에서 필요 하지 않 습 니 다.저 희 는 현재 폴 더 에서 실 행 됩 니 다.python 에서 검색 할 수 있 습 니 다.다른 서버 에서 실행 하려 면 DJANGO 를 지정 해 야 합 니 다.SETTINGS_MODULE 변수.
2.기본 설정
django 의 settings 파일 은 모든 항목 을 수 동 으로 설정 할 필요 가 없습니다.시스템 이 기본적으로 설정 되 어 있 기 때 문 입 니 다.우 리 는 우리 가 사용 하 는 설정 만 수정 해 야 한다.
정 하면 돼.기본 설정 은 django/conf/globalsettings.py 파일 에 있 습 니 다.django 컴 파일 시 global 먼저 불 러 오기settings.py 의 설정 을 불 러 오고 지정 한 settings 파일 을 불 러 와 변 경 된 설정 을 다시 씁 니 다.
자,본문 으로 들 어가 자.
앞의 수필 에서 우 리 는 setting 설정 을 자주 바 꾸 고 일부 설정 을 헷 갈 리 게 합 니 다.오늘 은 주로 흔히 볼 수 있 는 설정 을 모 으 는 것 입 니 다.
setting 설정 집합
1.app 경로

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'app1.apps.App1Config', 
 #              app       : 'app1'
 #             
]
2.데이터베이스 설정
django 의 기본 sqlite 3 데이터 베 이 스 를 사용 하면 변경 할 필요 가 없습니다.

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.sqlite3',
 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 }
}
my sql 데이터 베 이 스 를 사용 하려 면 상기 데이터 베 이 스 를 다음 과 같이 수정 해 야 합 니 다.

DATABASES = {
 'default': {  
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'blog', #                   
 'USER': 'root', #        
 'PASSWORD': '', #       
 'HOST': '', #       ,     localhost
 'PORT': '3306', #       
 }
}
그리고 응용 해 야 할init__.py 파일 추가

import pymysql
pymysql.install_as_MySQLdb()
자세 한 내용 은 볼 수 있 습 니 다.https://www.jb51.net/article/128674.htm
3.sql 구문

LOGGING = {
 'version': 1,
 'disable_existing_loggers': False,
 'handlers': {
 'console':{
  'level':'DEBUG',
  'class':'logging.StreamHandler',
 },
 },
 'loggers': {
 'django.db.backends': {
  'handlers': ['console'],
  'propagate': True,
  'level':'DEBUG',
 },
 }
} 
작업 이 데이터베이스 와 관련 이 있 을 때 우리 가 쓴 문 구 를 sql 문 구 를 서버 에서 인쇄 합 니 다.
4.정적 파일 디 렉 터 리

STATIC_URL = '/static/' #     
STATICFILES_DIRS=[
 os.path.join(BASE_DIR,"static"), #    
]
5.데이터베이스 에 있 는 User Info(사용자 표)가 django 내 장 된 AbstractUser 를 계승 하면
1)model 가 져 오기

from django.contrib.auth.models import AbstractUser
2)프로필

AUTH_USER_MODEL = "   .UserInfo"
6.중간 부품
프로젝트 의 md 폴 더 아래 md.py 파일 의 M1 과 M2 두 개의 미들웨어

MIDDLEWARE = [
 'django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'md.md.M1',
 'md.md.M2',
]
자신 이 쓴 미들웨어 에 주의 하 세 요.설정 은 시스템 뒤에 써 야 합 니 다.
7.session 저장 소 에 대한 설정
1)데이터베이스 설정(기본 값)

Django    Session,      Session         , :django_session   。
   settings.py
 SESSION_ENGINE = 'django.contrib.sessions.backends.db' #   (  )
 SESSION_COOKIE_NAME = "sessionid"   # Session cookie         key, :sessionid=     (  )
 SESSION_COOKIE_PATH = "/"    # Session cookie     (  )
 SESSION_COOKIE_DOMAIN = None    # Session cookie     (  )
 SESSION_COOKIE_SECURE = False    #   Https  cookie(  )
 SESSION_COOKIE_HTTPONLY = True    #   Session cookie   http  (  )
 SESSION_COOKIE_AGE = 1209600    # Session cookie    (2 )(  )
 SESSION_EXPIRE_AT_BROWSER_CLOSE = False   #          Session  (  )
 SESSION_SAVE_EVERY_REQUEST = False   #          Session,         (  )
2)캐 시 설정

   settings.py
 SESSION_ENGINE = 'django.contrib.sessions.backends.cache' #   
 SESSION_CACHE_ALIAS = 'default'    #        (      ,    memcache),           
 SESSION_COOKIE_NAME = "sessionid"   # Session cookie         key, :sessionid=     
 SESSION_COOKIE_PATH = "/"    # Session cookie     
 SESSION_COOKIE_DOMAIN = None    # Session cookie     
 SESSION_COOKIE_SECURE = False    #   Https  cookie
 SESSION_COOKIE_HTTPONLY = True    #   Session cookie   http  
 SESSION_COOKIE_AGE = 1209600    # Session cookie    (2 )
 SESSION_EXPIRE_AT_BROWSER_CLOSE = False   #          Session  
 SESSION_SAVE_EVERY_REQUEST = False   #          Session,         
3)기본 설정

   settings.py
 SESSION_ENGINE = 'django.contrib.sessions.backends.file' #   
 SESSION_FILE_PATH = None     #       ,   None,   tempfile          tempfile.gettempdir() 
 SESSION_COOKIE_NAME = "sessionid"    # Session cookie         key, :sessionid=     
 SESSION_COOKIE_PATH = "/"     # Session cookie     
 SESSION_COOKIE_DOMAIN = None    # Session cookie     
 SESSION_COOKIE_SECURE = False    #   Https  cookie
 SESSION_COOKIE_HTTPONLY = True    #   Session cookie   http  
 SESSION_COOKIE_AGE = 1209600    # Session cookie    (2 )
 SESSION_EXPIRE_AT_BROWSER_CLOSE = False   #          Session  
 SESSION_SAVE_EVERY_REQUEST = False    #          Session,         
주의:
1)설정 을 사용자 정의 할 수도 있 지만 사용자 정의 설정 은 설정 파일 의 마지막 코드 에 기록 하여 사용 할 때 설정 을 가 져 올 수 있 습 니 다.

from django.conf import settings
settings.   
2)위의 모든 설정 은 특정 문제 에 대해 수정 해 야 할 시스템 기본 설정 입 니 다.설명 하지 않 습 니 다.
3)위 설정 은 앞의 django 시리즈 에 세이 에서 만 나 는 일반적인 설정 일 뿐 이 에 세이 에서 계속 추가 되 고 새 것 입 니 다.
다음은 django settings 의 최 적 설정 인 스 턴 스 코드 를 보 겠 습 니 다.구체 적 인 코드 는 다음 과 같 습 니 다.

# encoding=utf-8
import os
import socket
SITE_ID = 1
#       
#        
PROJECT_ROOT = os.path.dirname(os.path.dirname(__file__))
#     
#       INSTALLED_APPS 
from apps.kuser.mysetting import myapp as kuser_app
from apps.blog.mysetting import myapp as blog_app
MY_APPS = blog_app + kuser_app
#       
from apps.blog.mysetting import my_staticfiles as blog_staticfiles
from apps.kuser.mysetting import my_staticfiles as kuser_staticfiles
MY_STATIC_DIRS = blog_staticfiles + kuser_staticfiles
#       
from apps.blog.mysetting import my_templates as blog_templates
from apps.kuser.mysetting import my_templates as kuser_templates
MY_TEMPLATE_DIRS = blog_templates + kuser_templates
#     
#             
#         ,     ,            
try:
 SECRET_KEY = os.environ['SECRET_KEY']
except:
 try:
 with open(os.path.join(PROJECT_ROOT, 'db/secret_key').replace('\\', '/')) as f:
  SECRET_KEY = f.read().strip()
 except:
 SECRET_KEY = '*lk^6@0l0(iulgar$j)faff&^(^u+qk3j73d18@&+ur^xuTxY'
#      
def hostname():
 sys = os.name
 if sys == 'nt':
 hostname = os.getenv('computername')
 return hostname
 elif sys == 'posix':
 host = os.popen('echo $HOSTNAME')
 try:
  hostname = host.read()
  return hostname
 finally:
  host.close()
 else:
 raise RuntimeError('Unkwon hostname')
#         
#           ,        
#ALLOWED_HOSTS           
if socket.gethostname().lower() == hostname().lower():
 DEBUG = TEMPLATE_DEBUG = True
 ALLOWED_HOSTS = []
else:
 ALLOWED_HOSTS = [
 'baidu.com',
 '0.0.0.0',
 ]
 DEBUG = TEMPLATE_DEBUG = False
#     
MYDB = {
 'mysql': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'books', #       
 'USER': 'root', #        
 'PASSWORD': '', #       
 'HOST': '', #       ,     localhost
 'PORT': '3306', #       
 },
 'sqlite': {
 'ENGINE': 'django.db.backends.sqlite3',
 'NAME': os.path.join(PROJECT_ROOT, 'db/db.sqlite3').replace('\\', '/'),
 }
}
#      url    , templates    。
#         url
# STATIC_URL    MEDIA_URL  
STATIC_URL = '/static/'
#   static  
#        manage.py collectstatic     static  
# STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static').replace('\\', '/')
#   app static      static  
#STATICFILES_DIRS: TEMPLATE_DIRS      ,      app static                ,
#            。           ,  Django,       
#  ,Django     findstatic                 ,  :D:\TestDjango>python manage.py findstatic Chrome.jpg
#      (      STATICFILES_FINDERS  ),Django    STATICFILES_DIRS             ,      app static      ,
#             。                STATICFILES_DIRS      , app         app static    。
#            static       ,      images    ,   CSS   css    ,   js     js    。
STATICFILES_DIRS = (
 ("downloads", os.path.join(PROJECT_ROOT, 'static/downloads').replace('\\', '/')),
 ("uploads", os.path.join(PROJECT_ROOT, 'static/uploads').replace('\\', '/')),
)
#  app                  
STATICFILES_DIRS += MY_STATIC_DIRS
#         STATICFILES_DIRS    
#      ,static       , css js images      (     ),        :
# os.path.join(STATIC_ROOT,'css'),os.path.join(STATIC_ROOT,'js'),os.path.join(STATIC_ROOT,'images');
#             css,js,images(      ,      ,          )
TEMPLATE_DIRS = (
 os.path.join(PROJECT_ROOT, 'templates').replace('\\', '/'),
)
#            
TEMPLATE_DIRS += MY_TEMPLATE_DIRS
#     
 CACHES = {
 'default': {
  'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
  'LOCATION': 'unix:/tmp/memcached.sock',
  'KEY_PREFIX': 'lcfcn',
  'TIMEOUT': None
 }
 }
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/auth/login/'
LOGOUT_URL = '/auth/logout/'
#         ,   Model   FileFIeld,ImageField     。     
# MEDIA_ROOT=c:\temp\media,  File=models.FileField(upload_to="abc/"),           c:\temp\media\abc。MEDIA_ROOT            。
MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'static/uploads')
# MEDIA_URL              。
MEDIA_URL = '/uploads/'
#       
INSTALLED_APPS = (
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.sites',
 'django.contrib.sitemaps',
)
#          ,           
#      app         
INSTALLED_APPS += MY_APPS
# django    
# django    Request        django    ,        URL     。
#            django           Request   ,
#                   Response,               ,
#           Request    ,  Django   。
MIDDLEWARE_CLASSES = (
 'django.middleware.cache.UpdateCacheMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 # 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.cache.FetchFromCacheMiddleware',
)
ROOT_URLCONF = 'lcforum.urls'
WSGI_APPLICATION = 'lcforum.wsgi.application'
#     
DATABASES = {
 'default': MYDB.get('sqlite'),
}
#   
LANGUAGE_CODE = 'zh-cn'
#   
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = True
#  template       
#                ,  settings.py,  TEMPLATE_CONTEXT_PROCESSORS    'django.core.context_processors.static'
# TEMPLATE_CONTEXT_PROCESSORS = (
# 'django.core.context_processors.debug',
# 'django.core.context_processors.i18n',
# 'django.core.context_processors.media',
# 'django.core.context_processors.static',
# 'django.contrib.auth.context_processors.auth',
# 'django.contrib.messages.context_processors.messages',
#
# 'django.core.context_processors.tz',
# 'django.contrib.messages.context_processors.messages',
# # 'blog.context_processors.custom_proc',     
# )
#from django.conf import settings
#gettext = lambda s: s
#getattr()
#       djangodemo,   app demo1 demo2
# django  static       app   static     
#   :
# djangodemo/djangodemo/static         
# djangodemo/demo1/static    app       
# djangodemo/demo2/static    app       
#       :
# STATIC_ROOT = '/www/djangodemo/djangodemo/static '
# STATIC_URL = '/static/'
# STATICFILES_DIRS = (
# 'djangodemo/static',
# 'demo1/static/',
# 'demo2/static/',
# )
#     
# manage.py collectstatic
#                 STATIC_ROOT 
#      admin,        ,                    
#                  。         manage.py collectstatic     
총결산
위 에서 말 한 것 은 소 편 이 소개 한 django 의 setting 최 적 설정 소결 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기