참새의 이야기
settings.py 본문
장고에서 프로젝트를 처음 생성하면, 그 안에는 여러 파일들이 존재한다.
프로젝트 폴더 내에서 가장 많이 만지게 될 파일은 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 |