Code:
accounts/serializers.py :
from django.contrib.auth import get_user_model
from rest_framework import serializers
from django.contrib.auth.password_validation import validate_password
User = get_user_model()
class RegisterSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True, min_length=8)
class Meta:
model = User
fields = ("email", "username", "first_name", "last_name", "password")
def validate_password(self, value):
validate_password(value)
return value
def create(self, validated_data):
password = validated_data.pop("password")
user = User.objects.create_user(**validated_data)
user.set_password(password)
user.save(update_fields=["password"])
return user
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ("id", "email", "username", "first_name", "last_name", "date_joined")
read_only_fields = ("id", "date_joined")
accounts/views.py :
from rest_framework import generics, permissions
from rest_framework.response import Response
from rest_framework.views import APIView
from .serializers import RegisterSerializer, UserSerializer
class RegisterView(generics.CreateAPIView):
"""
POST /api/auth/register/
body: {email, username?, first_name?, last_name?, password}
"""
serializer_class = RegisterSerializer
permission_classes = [permissions.AllowAny]
class MeView(APIView):
permission_classes = [permissions.IsAuthenticated]
def get(self, request):
return Response(UserSerializer(request.user).data)
accounts/urls.py :
from django.urls import path
from rest_framework_simplejwt.views import (
TokenObtainPairView, # POST /login
TokenRefreshView, # POST /refresh
)
from .views import RegisterView, MeView
urlpatterns = [
path("register/", RegisterView.as_view(), name="auth-register"),
path("login/", TokenObtainPairView.as_view(), name="auth-login"),
path("refresh/", TokenRefreshView.as_view(), name="auth-refresh"),
path("me/", MeView.as_view(), name="auth-me"),
]
در اخر urls.py اصلی پروژه رو اپدیت کنید
کانال ما در یوتیوب
@EsfCode-1381
#برنامه_نویسی #جنگو #پایتون #کدنویسی #مهندسی #آموزش_پایتون #اموزش
#coding #programming #docker #python #pythonanddjangofullstackwebdeveloper #teaching #testdrivendevelopment #postman
#apidevelopment #api #djangorestframework
Subscribe :
/ @esfcode-1381
Информация по комментариям в разработке