Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

참새의 이야기

settings.py 본문

Django

settings.py

참새짹짹! 2022. 8. 1. 21:44

장고에서 프로젝트를 처음 생성하면, 그 안에는 여러 파일들이 존재한다.

프로젝트 폴더 내에서 가장 많이 만지게 될 파일은 settings.py와 urls.py인 것 같다.

urls.py는 이후에 또 정리하도록 하고, 우선 settings.py에서 특별히 추가한 부분들에 집중하여 정리해보도록 하겠다.

 

 

1.  INSTALLED_APPS

INSTALLED_APPS = [
    ...
    'rest_framework',
    'knox',
    'rest_api',
    ...
]
  • INSTALLED_APPS에는 장고에서 활성화된 앱들을 넣어준다.
  • 위의 ‘knox’와 같이 특별히 필요한 것이 있다면, 이 역시 추가해주면 된다.
  • 장고 프로젝트를 “python manage.py startproject <project_name>”로 생성했다면,
    “python manage.py startapp <app_name>”으로 프로젝트 내부에 앱을 생성해 주어야 한다.
  • 이렇게 생성된 앱도 INSTALLED_APPS에 추가해주면 된다.

 

2. AUTH_USER_MODEL

AUTH_USER_MODEL = 'rest_api.User'
  • 이번 프로젝트에서 내가 맡은 가장 핵심적인 기능은 인증/인가 시스템 구현이다.
  • 우리 프로젝트 특성상, 커스텀 유저 모델이 필요했고, 이를 uwoobeat님이 만들어 주셨다.
  • 이렇게 생성된 유저 모델은 위의 코드와 같이 AUTH_USER_MODEL로 지정을 해줘야 한다.
  • ‘<앱의이름>.<유저모델의 이름>’ 의 꼴로 넣어주면 된다.

 

3. REST_FRAMEWORK

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': ('knox.auth.TokenAuthentication',),
}
  • 다음으로는, 안증 클래스와 권한 클래스의 default값을 설정해줘야 한다.
  • PERMISSION_CLASSES는 빼먹어도 다른 부분에서 적용이 가능하지만, default가 존재해야 귀찮음을 덜어낼 수 있으니, 가능한 추가 해주도록 하자.
  • AUTHENTICATION_CLASSES는 절대 빠지면 안 된다.
  • 특히 우리 프로젝트에서는 knox token을 사용했기 때문에, 이를 빠트리면 knox token이 적용되지 않는다.
  • 이 부분에서 어이없는 이유로 시간을 낭비했다.
  • AUTHENTICATION_CLASSES에서 튜플의 끝에 콤마를 추가하지 않아서 에러가 발생했다.
  • 요소가 하나일 때, 끝에 콤마가 없으면 tuple이 아닌 소괄호로 둘러싸인 string으로 취급을 하기 때문에 발생한 에러였다.
  • 콤마 하나 때문에 몇 시간 헤매는 게 어떤 케이스인지 느낄 수 있었던 뜻깊은 케이스였다.

 

이상으로. 인증/인가를 맡았던 내가 settings.py에서 인증/인가를 위해 특별히 추가한 부분들에 대한 정리를 마치겠다.

'Django' 카테고리의 다른 글

views.py  (4) 2022.08.04
이누공 프로젝트에서의 Role  (0) 2022.08.01