Djoser는 Django를 위한 간단하고 실용적인 인증 라이브러리입니다. 별도의 뷰(View) 코드를 작성하지 않고도 인증용 토큰을 손쉽게 발급할 수 있으며, 토큰은 username(사용자 이름), email(이메일), password(비밀번호) 세 가지 필드를 기반으로 생성됩니다. Djoser는 POST 요청에서만 동작하지만, 필요하다면 프론트엔드를 직접 연결해 확장할 수도 있습니다.
예제 프로젝트 만들기
먼저 Django 프로젝트와 앱을 생성합니다. 이 글에서는 프로젝트 이름을 "DjoserExample", 앱 이름을 "myapp"으로 지정했습니다.
다음으로 아래 두 개의 패키지를 설치합니다.
pip install djoser pip install djangorestframework
settings.py 설정
settings.py 파일에 다음 내용을 추가합니다.
INSTALLED_APPS = [
# 다른 앱들 아래에 추가
'myapp',
'rest_framework',
'rest_framework.authtoken',
'djoser'
]
# TEMPLATES 변수 아래에 추가
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
]
}
DJOSER = {
"USER_ID_FIELD": "username"
}여기서는 djoser와 rest_framework를 앱으로 등록했습니다. 이후 REST 프레임워크의 인증 백엔드를 설정하고, Djoser를 위해 User ID 필드(즉, 식별자로 사용될 인덱스 필드)를 지정했습니다.
이 예제에서는 Django가 기본 제공하는 사용자 인증 데이터베이스를 그대로 활용하기 때문에, 사실상 별도의 커스텀 앱 없이도 인증 기능을 구현할 수 있습니다.
urls.py 설정
프로젝트의 urls.py 파일을 열고 다음 내용을 추가합니다.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')),
path('api/v1/', include('djoser.urls')),
path('api/v1/token/login', include('djoser.urls.authtoken'))
]여기서는 Djoser의 사용자 관련 URL과 토큰 인증 백엔드 경로를 각각 정의했습니다. 이렇게 하면 뷰 코드를 하나도 작성하지 않고도 회원가입, 로그인, 토큰 발급 엔드포인트가 자동으로 준비됩니다.
서버 실행하기
모든 설정이 끝났습니다. 이제 터미널에서 아래 명령어를 차례로 실행하고 결과를 확인합니다.
python manage.py makemigrations python manage.py migrate python manage.py runserver
실행 결과 확인
1. 사용자 생성
브라우저나 API 클릭 도구(Postman 등)에서 https://127.0.0.1:8000/api/v1/users/ 주소로 접속합니다.
이 엔드포인트에서 username, email, password를 전송해 새로운 사용자를 생성할 수 있습니다.
2. 토큰 발급
이어서 https://127.0.0.1:8000/api/v1/token/login 주소로 접속합니다.
여기에 username과 password를 입력해 요청을 보내면, 해당 사용자에 대한 인증 토큰이 발급됩니다. 이후 보호된 API를 호출할 때 이 토큰을 Authorization 헤더에 담아 전송하면 됩니다.
이처럼 Djoser를 활용하면 몇 줄의 설정만으로 Django REST Framework 기반의 토큰 인증 시스템을 빠르게 구축할 수 있습니다.