Django drf使用Django自带的用户系统的注册功能

下面我将为您详细讲解Django DRF如何使用Django自带的用户系统进行注册:

1. 前置条件

在使用Django DRF进行用户注册之前,我们需要确保以下条件已经满足:

  1. 安装了Django DRF;
  2. 配置了Django自带的用户系统;
  3. 配置了Django的URL路由;
  4. 配置了Django的视图View。

2. 配置Django DRF

首先,我们需要在settings.py文件中添加DRF相关的设置:

INSTALLED_APPS = [
    # ...
    'rest_framework',
    # ...
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
}

以上代码中,我们添加了rest_framework应用,以便使用DRF;并设置了默认的认证方式为Token,权限为验证用户是否已认证。

3. 编写用户注册的序列化器

在Django DRF中,我们使用序列化器Serializer来对数据进行序列化和反序列化,因此我们需要编写一个用户注册的序列化器。在serializers.py中添加以下代码:

from django.contrib.auth.models import User
from rest_framework import serializers


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email', 'password')
        extra_kwargs = {'password': {'write_only': True}}

    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        return user

以上代码中,我们导入了Django自带的用户模型User,并使用serializers.ModelSerializer来定义了一个用户注册的序列化器UserSerializer。

Meta内部类中,我们定义了需要序列化的字段,包括'username', 'email', 'password'等,并定义了extra_kwargs,将密码设为只写。

create方法中,我们使用User.objects.create_user方法创建了一个新用户并返回用户对象。

4. 定义用户注册的API视图

在Django DRF中,我们使用API视图来处理HTTP请求。因此,我们需要定义一个用户注册的API视图。在views.py中添加以下代码:

from django.contrib.auth.models import User
from rest_framework import generics
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
from .serializers import UserSerializer


class UserCreateView(generics.CreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [AllowAny]

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response({'status': 'success', 'message': 'User created successfully'})

以上代码中,我们定义了一个继承于generics.CreateAPIView的视图UserCreateView,这意味着这个视图能够处理POST请求,用于新建用户。

我们设置了queryset,定义了选择所有User对象。

设置了serializer_class为我们自定义的UserSerializer,定义了序列化器。

设置了permission_classes,定义了访问权限。

接着,我们又定义了post方法,重载了视图自带的post方法。在方法中,我们使用serializer.save()方法保存用户数据,并返回一个创建成功的响应。

5. 配置API路由

我们需要配置API路由来将视图和URL绑定。在urls.py文件中添加以下代码:

from django.urls import path
from .views import UserCreateView


urlpatterns = [
    path('register/', UserCreateView.as_view(), name='user-register'),
]

以上代码中,我们定义了一个路由,使用UserCreateView视图处理路径为/register/的请求。

6. 使用Postman测试

最后,我们需要使用Postman来测试我们的API。在Postman中,发送一个POST请求到http://localhost:8000/register/,传递JSON数据包括username、email、password等字段,即可完成用户注册。

下面是示例代码:

{
    "username": "testuser",
    "email": "testuser@example.com",
    "password": "testpassword"
}

完成以上步骤后,我们就能够使用Django DRF来注册新用户了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django drf使用Django自带的用户系统的注册功能 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django-用户权限,用户角色使用指南(转载)

      向前冲我在路上 关注  0.1 2018.09.20 19:54 字数 1253 阅读 1124评论 0喜欢 8 前言(借鉴老师笔记) RBAC(Role-Based Access Control,基于角色的访问控制)就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这…

    Django 2023年4月12日
    00
  • Django笔记五之字段类型

    这篇笔记介绍字段的类型 Field Type。 Django 的model 下的 field 对应的是 MySQL 中的表字段,而我们定义的 field 的类型则对应 MySQL 中的字段类型。 本次主要介绍以下几种: CharField IntegerField DateField/DateTimeField BooleanField FloatField…

    2023年4月10日
    00
  • Django用户认证系统 User对象解析

    当我们在使用Django开发Web应用时,用户认证是非常常见的需求。Django提供了强大的用户认证系统来实现这一需求。其中,最核心的部分就是User对象。User对象是Django内置的代表用户身份和权限的模型。下面,我们来详细讲解Django用户认证系统User对象的相关知识。 User对象的组成 Django的User对象是由以下几个部分组成的: us…

    Django 2023年5月15日
    00
  • django+uwsgi+nginx部署(非常详细)

    django+uwsgi+nginx部署   1.介绍:   在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑。   2.环境: 1 Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-130-generic x86_64)   3.下载uwsgi以及nginx 1 apt-get install uwsgi 2…

    Django 2023年4月11日
    00
  • 简单的Django向HTML展示动态图片 案例——小白

    目标:通过Django向HTML传送图片展示 我的天哪,真是膈应人,网上的案例都不适合我,感觉所有的解决办法在我这里都不行。 好吧~ 是我菜,看不懂人家的代码,那句话叫啥来着?一本好经被傻和尚念歪了。自己摸索一下午,快疯了。路径是对的,但是就是不能把图片显示出来,最后看到别人博客的一句话,终于出来了~~~ 满满辛酸泪! 进入正题——————假装这是一条分割线…

    2023年4月9日
    00
  • Django发送邮件,注册时邮件获取验证码

    settings.py里面的配置 1 # 邮件 2 EMAIL_HOST = ‘smtp.163.com’ 3 # 设置端口号,为数字 4 EMAIL_PORT = 25 5 #设置发件人邮箱 6 EMAIL_HOST_USER = ‘kongfuzi_k@163.com’ 7 # 设置发件人 授权码 8 EMAIL_HOST_PASSWORD = ‘123…

    Django 2023年4月13日
    00
  • python3-django+uwsgi+supervisor+nginx跳坑指南(记录) 出现:unix:///tmp/supervisor.sock no such file

      首先运行django项目:在项目目录内: python manage.py runserver 0.0.0.0:8000 外部服务器访问:http://www.xxx.com:8000/ 可以正常运行  ###参考:https://blog.51cto.com/chenx1242/1859830 如果不对,不太对?这是因为django项目里设置了ALLO…

    Django 2023年4月11日
    00
  • Django实战之用户认证(用户登录与注销)

    下面我将详细讲解一下“Django实战之用户认证(用户登录与注销)”的完整攻略,包含两条示例说明。 1. 创建Django项目 首先,我们需要在命令行中创建一个新的Django项目,可以通过以下命令实现: django-admin startproject project_name 其中,project_name 是项目名,可以为任意名字。 接下来,我们进入…

    Django 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部