Django REST Frameworkに再挑戦 その17 User API Setup
概要
Django REST Frameworkに再挑戦 その17 User API Setup
参考サイト
www.codingforentrepreneurs.com
User API Setup
accounts/api/init.pyを作成する。
accounts/api/に、serializers.py, urls.py, views.pyを作成する。
accounts/api/serializers.pyにコードを書く。
from django.contrib.contenttypes.models import ContentType from django.contrib.auth import get_user_model from rest_framework.serializers import ( HyperlinkedIdentityField, ModelSerializer, SerializerMethodField, ValidationError ) User = get_user_model() #これでUser modelを代入できる。なにげにこれはかなり便利だな。 class UserCreateSerializer(ModelSerializer): class Meta: model = User fields = [ 'username', 'password', 'email', ]
- views.pyにコードを追記する。
from .serializers import ( UserCreateSerializer, ) class UserCreateAPIView(CreateAPIView): serializer_class = UserCreateSerializer queryset = User.objects.all()
- urls.pyにコードを追記する。
from django.conf.urls import url from django.contrib import admin from .views import ( UserCreateAPIView, ) urlpatterns = [ url(r'^register/$', UserCreateAPIView.as_view(), name='register'), ]
/api/users/register/ にアクセスして、登録してみる。登録はできた!
登録したアカウントで、ログインしてみる。。。ログインできない!
admin で確認すると、
Invalid password format or unknown hashing algorithm.
と表示される。validationが必要。とりあえず、passwordは読めないようにする。(write onlyにする)
class UserCreateSerializer(ModelSerializer): class Meta: model = User fields = [ 'username', 'password', 'email', ] extra_kwargs = {"password": {"write_only": True} }