How to Implement Token Authentication using Django REST Framework
In this tutorial you are going to learn how to implement Token-based authentication using Django REST Framework (DRF).
Install Django REST Framework DRF:
pip install djangorestframework
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework', #pip install djangorestframework
'rest_framework.authtoken',
'myapp',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
migrate the database python manage.py migrate views.py
#views.py
from django.shortcuts import render, redirect
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
class HelloView(APIView):
permission_classes = (IsAuthenticated,) #Generated token c4fe47947247e684dd0e065ea674e1645525d891 for user ednalan23
def get(self, request):
content = {'message': 'Hello, World!'}
return Response(content)
urls.py
#urls.py
from django.contrib import admin
from django.urls import path
from myapp import views
from django.conf.urls import url
from django.urls import include, path
from rest_framework.authtoken.views import obtain_auth_token
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', views.HelloView.as_view(), name='hello'),
path('api-token-auth/', obtain_auth_token, name='api_token_auth'),
]
I use HTTPie https://httpie.org/ Python command line tool:
http http://127.0.0.1:8000/hello/
http post http://127.0.0.1:8000/api-token-auth/ username=ednalan23 password=ednalan23
http GET http://127.0.0.1:8000/hello/ "Authorization: Token c4fe47947247e684dd0e065ea674e1645525d891"
