在網站當中,不可缺少的是帳號管理以及 Authentication 的功能。由於每個使用者會有其專屬的紀錄,因此使用者的管理以及相關操作是非常重要的。
若要管理使用者,Django 有內建的使用者相關的 class 以及 function,我們可以進行運用。
今天帶大家實作創建使用者的 API,讓大家了解如何透過 DRF 建立使用者管理功能之 API。
首先我們先建立一個名為 users 的 app ,使用這個 app,管理和使用者設定相關的功能。
docker-compose sh -c 'python manage.py startapp users'
建立 app 之後,再樣的我們需要再 settings.py 中的 INSTALLED_APPS中加入我們新增的 app 名稱
INSTALLED_APPS = [
...
'users',
...
]
建立serializers.py,這邊可以使用 django.contrib.auth 的 get_user_model 取得 user 的 model,
from rest_framework import serializers
from django.contrib.auth import get_user_model
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = ('password', 'name')
def create(self, validated_data):
return get_user_model().objects.create_user(**validated_data)
接著編寫 views.py ,這邊使用我們昨天介紹過的 Concrete View Classes 中 CreateAPIView,實作create 的功能。
from user.serializers import UserSerializer
from rest_framework import generics
class CreateUserView(generics.CreateAPIView):
serializer_class = UserSerializer
最後設定相對路徑,即完成 create user 的 api 了 ~
from django.urls import path
from .views import CreateUserView
app_name = 'user'
urlpatterns = [
path('create/', CreateUserView.as_view(), name='create'),
]
如此就完成了 create 使用者的功能,由於 user 的 model ,Django 本身已經建立好,甚至與 admin ,權限功能皆有相互連結,因此我們在使用上,可以透過 Django 本身的基礎進行運用。缺點是,我們必須要熟悉 Django 的設定以及用法,但是優點是我們可以有效率的建立使用者相關管理功能~