👻

【Django】Pythonで作るRest API【20Get LoginUser】

2023/02/07に公開

【20Get LoginUser】

YouTube: https://youtu.be/h2ozD_-EQ0A

https://youtu.be/h2ozD_-EQ0A

今回はログインしている「User」のデータを取得するビューを実装します。

myapp/accounts/views.py
from django.shortcuts import render
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .serializers import UserSerializer

# Create your views here.
@api_view(['GET'])
def getMe(request):
  user = request.user

  serializer = UserSerializer(user, many=False)
  return Response(serializer.data)

ビューの作成ができましたら、
「urls.py」にビューの設定を行います。

myapp/accounts/urls.py
from django.urls import path
from .views import getMe

urlpatterns = [
    path('me/', getMe, name='me'),
]

ここまでできましたら、
ローカルサーバーを起動して確認してみましょう。

http://127.0.0.1:8000/accounts/me/

こちらはブラウザでログインしている必要がありますので、
右上にメールアドレスが表示されていることを確認してください。

このままですとパスワードのように外部に表示されることが
好ましくないデータも表示されてしまいますので、
「serializers.py」でこちらの調整を行います。

myapp/accounts/serializers.py
from rest_framework import serializers
from django.contrib.auth.models import User

class UserSerializer(serializers.ModelSerializer):
  class Meta:
    model = User
    fields = ['id', 'username', 'email']

上記の「fields」の部分に
取得したい「User」のフィールドをリストで設定すると
レスポンスで返すデータの調整ができるようになります。

Discussion