장고 유저 모델 확장을 하여 사용하던 중, admin 사이트에서 토큰 생성이 가능했지만 유저가 생성될 때마다 토큰을 할당해줄 수는 없을까하고 검색해보니, 공식문서에 친절하게 설명이 나와있었다.
우선 토큰을 사용하기 위해 settings.py
에 아래와 같이 추가해주자.
INSTALLED_APPS = [
...
'rest_framework.authtoken'
]
처음 추가했다면 migrate
를 꼭 해주어야 하니 잊지 말자.
유저를 생성할 때 마다 토큰을 할동하고 싶다면 User's의 post_save
signal을 활용해 자동 생성이 가능하다.
프로젝트 models.py
에 아래와 같이 입력해준다.
from django.conf import settings
from django.db.models.signals import post_save
from django.dispatch import receiver
from rest_framework.authtoken.models import Token
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
아래와 같이 포스트맨을 활용해서 바디의 form-data
로 username과 password를 담아 유저를 생성해 주었다.
아래와 같이 유저가 생성됨과 동시에 admin 페이지에서 토큰이 생성되었음을 확인할 수 있다.
아래와 같이 for문
을 사용해 토큰 생성이 가능하다.
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token
for user in User.objects.all():
Token.objects.get_or_create(user=user)