django 의 setting 최 적 설정 소결
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.htm3.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 최 적 설정 소결 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.