Django REST Framework 创建自定义用户

django

1个回答

写回答

Jihnking68

2025-07-08 08:55

+ 关注

Django
Django

使用 Django REST Framework 创建自定义用户

在使用 Django REST Framework 进行 Web 开发时,经常需要自定义用户模型来满足项目的需求。Django REST Framework 提供了方便的方式来创建自定义用户模型,并且可以轻松地与认证和授权系统集成。

首先,我们需要创建一个新的 Django 项目,并安装 Django REST Framework。在终端中运行以下命令:

$ Django-admin startproject customuserproject

$ cd customuserproject

$ pip install Djangorestframework

安装完成后,在 settings.py 文件的 INSTALLED_APPS 列表中添加 rest_framework

Python

INSTALLED_APPS = [

...

'rest_framework',

]

接下来,我们需要创建一个自定义用户模型。在 Django 中,我们可以通过继承 ABStractUser 类来创建自定义用户模型。在项目的根目录下创建一个新的应用:

$ Python manage.py startapp customuserapp

customuserapp 目录下的 models.py 文件中,定义自定义用户模型:

Python

from Django.contrib.auth.models import ABStractUser

from Django.db import models

class CustomUser(ABStractUser):

# 添加自定义字段

bio = models.TextField(max_length=500, blank=True)

location = models.CharField(max_length=30, blank=True)

接下来,我们需要更新 settings.py 文件,指定新的用户模型。将以下内容添加到 settings.py 文件末尾:

Python

AUTH_USER_MODEL = 'customuserapp.CustomUser'

然后运行以下命令,创建数据库迁移文件并应用迁移:

$ Python manage.py makemigrations

$ Python manage.py migrate

现在,我们已经成功地创建了自定义用户模型。接下来,我们可以通过 Django REST Framework 的序列化器来创建用户的 API 视图。

customuserapp 目录下创建一个新的文件 serializers.py,定义用户模型的序列化器:

Python

from rest_framework import serializers

from .models import CustomUser

class CustomUserSerializer(serializers.ModelSerializer):

class Meta:

model = CustomUser

fields = ['id', 'username', 'emAIl', 'bio', 'location']

然后,在 customuserapp 目录下创建一个新的文件 views.py,定义用户的 API 视图:

Python

from rest_framework import viewsets

from .models import CustomUser

from .serializers import CustomUserSerializer

class CustomUserViewSet(viewsets.ModelViewSet):

queryset = CustomUser.objects.all()

serializer_class = CustomUserSerializer

现在,我们已经创建了用户的 API 视图。接下来,我们需要配置 URL 路由,以便可以访问这些 API 视图。

在项目的根目录下的 urls.py 文件中,添加以下内容:

Python

from Django.contrib import admin

from Django.urls import include, path

from rest_framework import routers

from customuserapp import views

router = routers.DefaultRouter()

router.register(r'users', views.CustomUserViewSet)

urlpatterns = [

path('admin/', admin.site.urls),

path('api/', include(router.urls)),

]

现在,我们可以运行开发服务器,并访问 /api/users/ 来查看用户的 API 视图了:

$ Python manage.py runserver

通过以上步骤,我们成功地使用 Django REST Framework 创建了自定义用户模型,并创建了相应的 API 视图。开发者可以根据项目的需求,进一步扩展和定制用户模型和 API 视图。

案例代码:

Python

# models.py

from Django.contrib.auth.models import ABStractUser

from Django.db import models

class CustomUser(ABStractUser):

# 添加自定义字段

bio = models.TextField(max_length=500, blank=True)

location = models.CharField(max_length=30, blank=True)

# serializers.py

from rest_framework import serializers

from .models import CustomUser

class CustomUserSerializer(serializers.ModelSerializer):

class Meta:

model = CustomUser

fields = ['id', 'username', 'emAIl', 'bio', 'location']

# views.py

from rest_framework import viewsets

from .models import CustomUser

from .serializers import CustomUserSerializer

class CustomUserViewSet(viewsets.ModelViewSet):

queryset = CustomUser.objects.all()

serializer_class = CustomUserSerializer

# urls.py

from Django.contrib import admin

from Django.urls import include, path

from rest_framework import routers

from customuserapp import views

router = routers.DefaultRouter()

router.register(r'users', views.CustomUserViewSet)

urlpatterns = [

path('admin/', admin.site.urls),

path('api/', include(router.urls)),

]

通过以上代码,我们可以创建自定义用户模型,并使用 Django REST Framework 创建相应的 API 视图。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号