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日

相关文章

  • python ==> Django.view(登录,注册,个人页)

    Django-views 1.本篇博客主要是想实现一个:通过Django创建一个项目,目的: 三个界面,用户登录界面,用户注册界面,用户登录成功之后的个人页。本篇功能很简单,就是简单的时间页面的跳转,主要以练习为主。 首先:我们先把项目创建好,这里我创建的Django的项目名为:mysite_views,并且创建一个应用项目:app01.  两种创建方式: …

    Django 2023年4月11日
    00
  • Django的用户模块与权限系统的示例代码

    下面是Django的用户模块与权限系统的示例代码的完整攻略。 一、用户模块示例代码 用户模块是Django中的一个常用组件,它可以轻松实现用户的注册、登录、密码找回等功能。下面是一个简单的用户模块示例代码: 1. 创建用户模型 首先,在项目的models.py文件中创建一个用户模型: from django.db import models from dja…

    Django 2023年5月16日
    00
  • Django 学习之Celery(芹菜)

    Celery 介绍 文档:http://docs.celeryproject.org/en/latest/index.htmlCelery 是一个功能完备,即插即用的异步任务队列,可以独立于主进程运行,在主进程退出后,也不影响队列中的任务的执行。任务执行异常退出,重新启动后,会继续执行队列中的其他任务,同时可以缓存停止期间接收的工作任务,这个功能依赖于消息队…

    Django 2023年4月11日
    00
  • Django笔记 —— 基础部分总结

      最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过。Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧~   本篇笔记(其实我的所有笔记都是),并不会过于详细的讲解。因此如果有大家看不明白的地方,欢迎在我正版博客下留言,有时间的时候我很愿意来这里与大家探讨问题。(当然,不能…

    Django 2023年4月13日
    00
  • Django之drf的视图类

    目录 1. 视图相关 1.1. 请求与响应 1.1.1 Request 1.1.1.1 常用属性 1).data 2).query_params 1.1.2 Response 1.1.2.1 构造方式 1.1.2.2 常用属性 1).data 2).status_code 3).content 1.1.2.3 状态码 1)信息告知 – 1xx 2)成功 – …

    2023年4月10日
    00
  • QQ_990814268 摘抄Django项目购物车、订单(三)

    提示 使用redis数据库存储购物车数据 购物车需要完成增、删、改、查的逻辑 查询的结果,需要由服务器响应界面给客户端展示出来 增删改的操作,是客户端发数据给服务器,两者之间的交互是局部刷新的效果,需要用ajax交互 添加购物车的请求方法:post 服务器和客户端传输数据格式:json 服务器接收的数据 用户id:user_id 商品id:sku_id 商品…

    Django 2023年4月13日
    00
  • django 读取图片到页面实例

    下面是详细的“Django 读取图片到页面实例”的攻略,包含两个示例说明。 1. 示例1:读取静态文件夹中的图片到页面 在 Django 项目的 settings.py 中添加以下设置,指定项目中的静态文件夹路径: STATIC_URL = ‘/static/’ STATICFILES_DIRS = [ os.path.join(BASE_DIR, &quo…

    Django 2023年5月16日
    00
  • python Django的显示个人信息详解

    关于“python Django的显示个人信息详解”的攻略,我整理了以下流程,也包含两条示例说明。 1. 创建模型 在 Django 中,我们需要先创建一个模型,即个人信息的数据库模型。通过以下几个步骤可以实现: 1.1 在已有的 Django 项目中创建一个 app(如果还没有 app,可以先创建一个 app) python manage.py start…

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