drf 사용한 문법 정리(settings.py)

이종호·2021년 3월 9일
0

Django

목록 보기
5/6
post-thumbnail

1. DEBUG = True

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

개발 시 에러화면을 보여주길 원하면 True, 아니면 False를 한다.

True일 때

False일 때

배포 코드일 경우 당연히 False로 해야한다.

2. ALLOWED_HOSTS

사이트와 연결할 주소를 적는 곳이다.
비워두거나 *를 넣는다면 모든 주소를 받는다는 의미이고,
특정 ip를 넣는다면 그 아이피에서 접속하는 명령만 수행가능하다는 의미이다.

따라서
1. 개발환경과 배포의settings.py를 따로 만들어 적용한다든지 링크!
2. if문으로 구분한다든지의 방법을 취한다.

3. INSTALLED_APPS

앱을 만들거나 어떤 라이브러리를 다운 받았다면 필수적으로 여기에 등록해야한다.
의미는 project에서 인식할 수 있게 한다고 알고있다.

앱 등록

앱을 등록하는 2가지 방법이 있는데

1. 앱 이름만 적는 경우:

'user',
'category',

2. apps.py에 모델Config클래스를 만들고

blog.apps.UserConfig

형태로 넣는방법이다.

나는 당연히 짧은게 좋지 하고 위에만 썻는데 찾아보니 이름이 겹치면 오류가 생길 수 있기 때문에 큰 프로젝트를 할 경우 아래 방법을 적용하는 것이 좋다고 공홈에 있었다.

보통 어떤 라이브러리를 적용하는 예제를 보면 항상 하는 일이니 크게 걱정하지 않아도 된다.

MIDDLEWARE

https://uiandwe.tistory.com/1160
모든 요청 이벤트 처리시 통과하는 과정이라고 한다.

모든 요청에 공통적으로 요구되는 것이 있다면 여기에 추가하면된다.
ex) CORS, ..

DATABASES

연결한 db의 정보를 저장하는 곳으로 django에서는 기본적으로 sqlite3를 연결해 사용한다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

MySQL를 사용한다면 이런 형식을 갖춘다.

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',    [1]
        'NAME': 'django_insta',                  [2]
        'USER': 'root',                          [3]
        'PASSWORD': 'password',                  [4]
        'HOST': 'localhost',                     [5]
        'PORT': '3306',                          [6]
    }
}

여기엔 user, password, host, port번호와 같은 개인적인 정보가 들어가기 때문에 별도의 파일에 저장하고 .gitignore한 뒤 불러오는 형식으로 가져온다.

REST_FRAMEWORK

restframework를 할 경우 추가하면 된다.

AUTH_PASSWORD_VALIDATORS

장고는 기본적으로 아이디나 비밀번호 생성에 약간의 조건들이 있다.
처음 개발하는 입장에서 환영하긴 하지만 무릇 개발자라면 커스터마이징 해야하는 순간이 오기 마련이다.

그럴때 건드리는 곳이 이곳이다.
자세한 내용은 해당 문서를 참조하면 좋을 것 같다.
문서!
공식문서

CORS

##CORS
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True

CORS_ALLOW_METHODS = (
    ...
)

CORS_ALLOW_HEADERS = (
    ...
)

CORS 공식 github
한글로 정리된 사이트
보통 개발환경일 경우에만 모두 True로 하고 실제 배포환경에선 당연히 해당 서버IP만 들어올 수 있도록 한다.

기타 설정

LANGUAGE_CODE = 'ko-kr'

TIME_ZONE = 'Asia/Seoul'

USE_I18N = True

USE_L10N = True

USE_TZ = False
  • LANGUAGE_CODE: admin페이지에서 보이는 언어 설정
  • TIME_ZONE: 서버의 시간 설정, 필수로 하자
  • USE_TZ : .. 잘 몰랐는데 여기 잘 정리된 글이 있다
    추가로 aware time, naive time관한 글도 있다.

allauth

# allauth
AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    'django.contrib.auth.backends.ModelBackend',

    # `allauth` specific authentication methods, such as login by e-mail
    'allauth.account.auth_backends.AuthenticationBackend',
)


# REDIRECT_URL 
ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTS = True
LOGIN_REDIRECT_URL = "/"
ACCOUNT_AUTHENTICATED_LOGOUT_REDIRECTS = True
ACCOUNT_LOGOUT_REDIRECT_URL = "/"

# First time authentication leads to ConnectionRefusedError at /accounts/facebook/login/callback/
ACCOUNT_EMAIL_VERIFICATION = 'none'

SITE_ID = 1

전부 allauth관련 코드이며 자세한 내용은 구글에서 찾아보자.

profile
코딩은 해봐야 아는 것

0개의 댓글