About Lesson
In this Django REST Framework lesson we are going to learn about Django REST Framework User Registration, we will learn that how you can register a user with specific Token.
Open your serializers.py file and create new serializer for the User system, we are going to use the built in system from django, also we want dynamically token for the new registered users.
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 |
from rest_framework import serializers from .models import Article from django.contrib.auth.admin import User from rest_framework.authtoken.views import Token class ArticleSerializer(serializers.ModelSerializer): class Meta: model = Article fields = ['id', 'title', 'description'] #new serializer for the user class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ['id', 'username', 'password'] extra_kwargs = {'password': { 'write_only':True, 'required':True }} def create(self, validated_data): user = User.objects.create_user(**validated_data) Token.objects.create(user=user) return user |
Now we want to create our view for the user, so open your views.py file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from .models import Article from .serializers import ArticleSerializer, UserSerializer from rest_framework import viewsets from rest_framework.authentication import TokenAuthentication from rest_framework.permissions import IsAuthenticated from django.contrib.auth.admin import User class ArticleViewSet(viewsets.ModelViewSet): serializer_class = ArticleSerializer queryset = Article.objects.all() authentication_classes = (TokenAuthentication,) permission_classes = [IsAuthenticated] #newly added view for the user system class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer |
Register your new view in the urls.py file.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
from django.urls import path, include from .views import ArticleViewSet, UserViewSet from rest_framework.routers import DefaultRouter router = DefaultRouter() router.register('articles', ArticleViewSet, basename='articles') router.register('users', UserViewSet, basename='users') urlpatterns = [ path('api/', include(router.urls)) ] |
And now you can register a new user with the specific token.