😺
【Django】Pythonで作るRest API【30Register View】
【30Register View】
YouTube: https://youtu.be/etuscCPIRt0
今回はユーザー作成のビューを作成します。
「username」のフィールドに「email」で
送られてきたデータを設定して、
「username」と「email」の不一致を防止しています。
また、同じメールアドレスのユーザーが重複しないように
条件分岐で処理を分けるようにしています。
myapp/accounts/views.py
from django.shortcuts import render
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from .serializers import UserSerializer, RegisterSerializer
from rest_framework import status
from django.contrib.auth.models import User
from django.contrib.auth.hashers import make_password
# Create your views here.
@api_view(['POST'])
def register(request):
data = request.data
user = RegisterSerializer(data=data)
if user.is_valid():
if User.objects.filter(username=data['email']).exists():
return Response({'message': 'This user already exists'}, status=status.HTTP_400_BAD_REQUEST)
else:
user = User.objects.create(
first_name = data['first_name'],
last_name = data['last_name'],
email = data['email'],
username = data['email'],
password = make_password(data['password'])
)
return Response({'message': 'User Register Success'}, status=status.HTTP_201_CREATED)
else:
return Response(user.errors, status=status.HTTP_400_BAD_REQUEST)
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def getMe(request):
user = request.user
serializer = UserSerializer(user, many=False)
return Response(serializer.data)
ビューの設定ができましたら、
パスに追加します。
myapp/accounts/urls.py
from django.urls import path
from .views import getMe, register
urlpatterns = [
path('me/', getMe, name='me'),
path('register/', register, name='register'),
]
Discussion