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

yizhihongxing

下面我将为您详细讲解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实现api跨域请求访问

    第一步:安装 django-cors-headers pip install django-cors-headers   第二步:配置settings.py文件 ———————–和前端配合指定可以跨域的用户—————————- from corsheaders.defaults import …

    Django 2023年4月11日
    00
  • django redis的使用方法详解

    接下来我会给您详细讲解“django redis的使用方法详解”的完整攻略,并且包含两条示例说明。 概述 Django Redis是Redis客户端,提供了许多重要的特性,比如连接池、分片、集群支持等等,使得Redis在Django中的应用变得更加简单、高效。在使用Django Redis时,需要先安装redis-python包(pip install re…

    Django 2023年5月16日
    00
  • django之urls系统

    Django的urls系统简介 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。 你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。 URLconf配置 基本格式: from django.co…

    Django 2023年4月9日
    00
  • Django模型层

    目录 模型层与ORM 一、初步认识ORM 二、ORM常用关键字 三、ORM查询SQL语句的方法 四、神奇的双下划线查询 五、ORM外键字段创建 1.ORM外键字段创建理论铺垫 2.ORM外键字段创建相关操作 六、多表查询(基于对象和双下划线) 1.ORM跨表查询理论 2.基于对象的跨表查询 3.基于双下划线的跨表查询 4.进阶操作 5.补充说明 七、聚合查询…

    Django 2023年4月10日
    00
  • Python – Django – ORM Django 终端打印 SQL 语句

    在 settings.py 中添加以下内容: LOGGING = { ‘version’: 1, ‘disable_existing_loggers’: False, ‘handlers’: { ‘console’:{ ‘level’:’DEBUG’, ‘class’:’logging.StreamHandler’, }, }, ‘loggers’: { ‘…

    Django 2023年4月10日
    00
  • Django学习——全局templates引用的问题

    一、问题在构建网站的时候我们会用到全局的templates处理错误的网页,此时我们需要对urls进行一个映射,使得在使用的时候避免重复调用。在使用的时候还会产生错误代码:第一个是404界面的,第二个是500界面的(Django:2.2.2) ?: (urls.E007) The custom handler404 view ‘index.views.page…

    Django 2023年4月12日
    00
  • Django笔记二十二之多数据库操作

    本文首发于公众号:Hunter后端原文链接:Django笔记二十二之多数据库操作 这一篇笔记介绍一下多数据库操作。 在第十篇笔记的时候,简单介绍过 using() 的使用方法,多个数据库就是通过 using(db_alias) 的方式来来指定选中的数据库,这里介绍一下同步库表结构时候的操作。 定义方式 同步命令 指定数据库操作 1、定义方式 在 settin…

    Django 2023年4月13日
    00
  • Django auth应用模块详解

    Django auth应用模块是什么? Django auth 应用模块是 Django 框架提供的一个内置应用模块,用于管理用户认证、用户权限、密码重置等与用户身份验证相关的任务。它提供了许多可以直接使用的视图、表单和模板,以简化身份验证相关的编程。 Django auth 模块的主要组件包括以下几个部分: User 模型:Django auth 模块提供…

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