내가 보려고 만든 django 분석 - 4 (settings.py)

sihwan_e·2021년 6월 1일
0

Django

목록 보기
15/21
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

BASE_DIR

프로젝트 루트 폴더.
프로젝트 루트 폴더를 찾아서 그 하위를 찾을 때 등 쓰인다.
django 웹 어플리케이션이 실행 되는 동안, django가 프로젝트 폴더 어디든 이동하며 필요한 파일을 찾기 위해서 기본적으로 해당 프로젝트의 루트 디렉토리 경로를 알고 있어야 하며, 그에 대한 설정이다.

- __file__ : 현재 파일(settings.py)의 절대 경로. 
해당 파일이 모듈로서 로드되면 __file__ 이라는 이름으로 설정된다.
즉 , 현재 수행중인 코드를 담고 있는 파일이 위치한 경로를 알려주는 역할을 한다.
- os.path.abspath(__file__) : 인자로 주어지는 경로의 절대 경로
- os.path.dirname() : 인자로 주어지는 파일/폴더의 경로

BASE_DIR은 settings.py가 위치한 폴더, 즉 프로젝트 폴더를 가리킨다.
django는 이를 기준으로 프로젝트 내에서 필요한 것들을 찾아 다니게 된다.

파일 및 디렉토리 경로에 관한 함수는 모두 os모듈을 사용하기 때문에 os 모듈을 import 해주어야 한다.

os.path 

—Python의 일반적인 경로명 조작

os.path.abspath
os.path.abspath(path)
경로명 path의 정규화된 절대 버전을 반환합니다. (특정 경로에 대한 정대 경로를 얻음)

os.path.dirname
os.path.dirname(path)
경로명 path의 디렉터리 이름을 반환합니다. (경로 중에서 디렉토리 명만 얻음)

BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file _)))

print(BASE_DIR)

/Users/sihwan/django_mark3/stargram

print(os.path.abspath(_ _file__))

/Users/sihwan/django_mark3/stargram/stargram/settings.py

print(os.path.dirname(os.path.abspath(_ _file__)))

/Users/sihwan/django_mark3/stargram/stargram

AUTH_PASSWORD_VALIDATORS

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

장고 auth 프레임워크는 크게 가입, 로그인, 로그아웃 세가지의 기능을 제공한다.
django는 auth 기능을 통해 아이디와 유사한 비밀번호를 막는다거나, 동일한 숫자나 문자 등을 사용하지 못하게 사전에 방지해준다.(is_password_usable() 함수 참조)

하지만 그러한 기능을 쓰지 않고 싶을 때는 settings의 해당 부분을 살짝 바꿔주면 된다.

UserAttributeSimilarityValidator
username (id나 email)과 비밀번호가 유사한지 체크

MinimumLengthValidator
default 8자와 다른 최소 비밀번호 숫자를 지정할 수 있다

CommonPasswordValidator
common한 비밀번호와 체크. 기본으로 1000개의 common 비밀번호 리스트와 비교한다.

NumericPasswordValidator
전부 숫자인 비밀번호를 사용하지 못하게 한다.

ex)
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
'OPTIONS': {
'min_length': 10,
}
},

SECRET_KEY
DEBUG
ALLOWED_HOSTS
INSTALLED_APPS
MIDDLEWARE
CORS
ROOT_URLCONF
TEMPLATES
WSGI_APPLICATION
DATABASES
Internationalizeation
STATIC_URL
AUTH_USER_MODEL

profile
Sometimes you gotta run before you can walk.

0개의 댓글