首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果登录不存在,则Django rest创建用户

如果登录不存在,则Django Rest Framework(DRF)可以通过以下步骤创建用户:

  1. 首先,需要在Django项目中安装和配置DRF。可以使用pip命令安装DRF:pip install djangorestframework。然后,在项目的settings.py文件中添加rest_frameworkINSTALLED_APPS列表中。
  2. 创建一个用于用户注册的API视图。可以使用DRF的APIView类或ViewSet类来创建视图。以下是一个使用APIView的示例:
代码语言:txt
复制
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from django.contrib.auth.models import User

class UserRegistrationAPIView(APIView):
    def post(self, request):
        username = request.data.get('username')
        password = request.data.get('password')

        if not User.objects.filter(username=username).exists():
            user = User.objects.create_user(username=username, password=password)
            return Response({'message': 'User created successfully'}, status=status.HTTP_201_CREATED)
        else:
            return Response({'message': 'Username already exists'}, status=status.HTTP_400_BAD_REQUEST)

在上述代码中,我们首先从请求数据中获取用户名和密码。然后,通过检查数据库中是否存在具有相同用户名的用户来确定是否创建新用户。如果用户名不存在,则使用create_user方法创建新用户。

  1. 配置URL路由以将API视图映射到相应的URL。在项目的urls.py文件中添加以下代码:
代码语言:txt
复制
from django.urls import path
from .views import UserRegistrationAPIView

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

在上述代码中,我们将UserRegistrationAPIView视图映射到/api/register/ URL。

现在,当发送POST请求到/api/register/时,如果提供的用户名不存在,将创建一个新用户。如果用户名已存在,则会返回相应的错误消息。

这是一个简单的示例,你可以根据自己的需求进行扩展和定制。关于Django Rest Framework的更多信息和功能,请参考腾讯云的相关产品和文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Django REST framework+Vue 打造生鲜超市(六) 七、用户登录与手机注册

    七、用户登录与手机注册 7.1.drf的token (1)INSTALL_APP中添加 INSTALLED_APPS = ( ......', 'rest_framework.authentication.TokenAuthentication' ) }  drf的token缺点 保存在数据库中,如果是一个分布式的系统...7.2.json web token方式完成用户认证 使用方法:http://getblimp.github.io/django-rest-framework-jwt/ (1)安装 pip install...jwt接口它默认采用的是用户名和密码登录验证,如果用手机登录的话,就会验证失败,所以我们需要自定义一个用户验证  自定义用户认证  (1)settings中配置 AUTHENTICATION_BACKENDS...7.7.django信号量实现用户密码修改 (1)完善用户注册 添加一条用户短信验证码数据之后进行验证。

    6K80

    DRF-认证权限频率

    ,来模拟认证登录登录成功返回json字符串,并且携带随机字符串(uuid模拟生成token),通过token随机字符串来判断用户是否登录登录了就更新token,首次登录就存token; 分析 创建User...表 创建UserToken表,和User一对一关系 前端传入用户名,密码 数据库取校验用户信息 校验成功,Token表内新增一条记录,返回给前端json格式字符串,字符串中带一个随机字符串 登录接口 模型...,如果不存在就新增,指定搜索对象,然后defaults指定更新内容 models.UserToken.objects.update_or_create(user=user,defaults...': token}) return Response({'code': 101, 'msg': '登录失败,用户名或密码错误'}) 路由 from django.contrib import...,如果不存在就新增,指定搜索对象,然后defaults指定更新内容 models.UserToken.objects.update_or_create(user=user, defaults

    60310

    python测试开发django-61.权限认证(permission)

    前言 用户登录后,才有操作当前用户的权限,不能操作其它人的用户,这就是需要用到权限认证,要不然你登录自己的用户,去操作别人用户的相关数据,就很危险了。...当收到的请求通过身份验证时: request.user属性会设置为django.contrib.auth.User对象,即我们登录的对象(我们定义用户继承于User)。...django rest framework权限和认证有四种方式: BasicAuthentication 此身份验证方案使用HTTP基本身份验证,根据用户用户名和密码进行签名。...当权限检查失败时,将根据以下规则返回HTTP 403 Forbidden或HTTP 401 Unauthorized: 如果收到的请求身份验证通过,但是权限验证失败,返回HTTP 403 Forbidden...; 如果收到的请求身份验证失败,且最高优先级验证类不能使用WWW-Authenticate请求头,返回HTTP 403 Forbidden; 如果收到的请求身份验证失败,且最高优先级验证类可以使用WWW-Authenticate

    2K40

    OAuth2.0 social_djan

    python网站第三方登录,social-auth-app-django模块, social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块 目前流行的第三方登录都采用了...django.contrib.messages', 'django.contrib.staticfiles', #第三方登录 'social_django', ] 下一步我们就要执行迁移...然后我们继续settings.py配置: 配置这里,当用户登录的时候,如果用户不存在,会自动在用户创建用户,并且关联用户信息 TEMPLATES = [ { 'BACKEND'...', #指定django的modelbackend 类 ] 第三方参数配置: # 用户key SOCIAL_AUTH_WEIBO_KEY = '' # 用户secret SOCIAL_AUTH_WEIBO_SECRET...然后在100行左右  把下面这行代码 return backend.strategy.redirect(url) 修改为: from rest_framework_jwt.serializers import

    52510

    django 自带 user 字段扩展及头像上传

    self): # 具体发送短信逻辑可以自行查找实现 pass 在 UserManager 中,需要通过 create_user 和 create_superuser 的方法来创建用户和超级用户...pillow 打开图像,保存副本 avatar = Image.open(request.data['avatar']) # 判断文件的父文件是否存在,不存在创建...serializer.errors, status=status.HTTP_400_BAD_REQUEST) 注释能看懂的小伙伴就可以跳过这部分啦,没完全懂的小伙伴继续跟上节奏~首先我们需要添加权限,需要用户登录后才可以进行修改或者上传头像...IsAuthenticated(BasePermission): """ Allows access only to authenticated users. """ # 当用户登录了而且获取认证才返回...avatar/{}/{}.{}".format(request.user.username, name, suffix) 在保存副本之前,需要通过 os.path.exists 判断该文件的父文件夹是否存在,如果不存在的话就需要通过手动创建

    2.2K30

    Django Swagger接口文档生成

    接入Swagger 大致步骤 1.安装django-rest-swagger 2.进入到setting.py文件,添加django-rest-swagger应用 3.进入到views.py,将之前定义的...    'SECURITY_DEFINITIONS': {         "basic":{             'type': 'basic'         }     },     # 如果需要登录才能够查看接口文档...            返回所有用户,按最近加入的用户排序         create:             创建用户         delete:             删除现有用户         ...python3 manage.py migrate 创建超级用户 python3 manage.py createsuperuser 注意:密码必须符合复杂性要求。...这里是返回了一条用户表数据,"username": "xiao",就是我新建的超级用户。 点击Authorize ? 输入新建的超级用户和密码 ?  登录成功后,效果如下: ?

    4.3K40

    Django(72)Django认证系统库–djoser「建议收藏」

    作用:Django认证系统的REST实现。djoser库提供了一组Django Rest Framework视图,用于处理注册、登录、注销、密码重置和帐户激活等基本操作。它适用于自定义用户模型。...Django 3.1 支持的drf版本 Django Rest Framework 3.9 Django Rest Framework 3.10 Django Rest Framework 3.11...使用接口测试工具postman或者其他工具,输入url和data,就能访问接口了 可以看到我们已经成功创建了一个id为2的用户登录查询用户信息 刚才我们只是创建了一个新用户,但是没有进行登录操作...用户登录 我们访问用户登录接口,就可以返回一个token 登录后查询用户信息 然后我们在headers中添加Authorization,对应的值为Token 刚刚返回的token值,注意中间要有一个空格...之后我们再访问查询用户信息接口,就能正确返回用户信息了 退出登录 最后访问退出登录接口,就可以退出登录了 退出后再查询用户信息 当我们退出登录后,再次用之前的token去查询用户信息后就会报错

    1.9K20

    django写接口(实战篇)

    首先我们要先创建一个 filters.py 文件,用来定义过滤器 filter import django_filters # 自定义过滤器需要继承 django_filters.rest_framework.FilterSet...('title', lookup_expr='icontains') # 指定筛选的 model 和筛选的参数,其中筛选的参数在前面设置了筛选条件,根据筛选条件来执行, #...rest_framework 身份认证 当我们设置权限的时候,我们不可能每个接口都去设置用户登录,所以就涉及用户身份验证,Android App 常用的身份验证是 Token 验证,所以这部分主要讲 TokenAuthentication...token, created = Token.objects.get_or_create(user=user) print user.username, token.key 当然,我们不可能每次创建用户的时候都手动去生成...例如之前我们做删除等编辑操作都需要用户进行登录 http -a[username]:[password] DELETE http://192.168.x.xxx:8080/api/post/10/ 获得

    2.1K20

    Django+Vue开发生鲜电商平台之7.用户登录和注册功能

    但是在创建用户后并不会自动创建token,而是需要自己创建,可以使用HTTP请求模拟发送工具进行发送参数创建,使用Postman演示如下: ?...如果将验证信息保存到数据库中,会增加数据库的操作和存储开销;如果存到session中,又会增大服务器存储压力;如果采用加密算法来对用户信息加密得到token,很容易被解密而泄漏用户信息。...可以看到,在登录之前,state中name和token均为空,登录之后即变为当前用户用户名和JWT。...在用户进行登录提交后,通过对用户名和密码进行比对,但是如果通过手机号码登录,就可能失败,因为登录时obtain_jwt_token查询数据库默认查询的是用户名和密码,而未查询手机号码,因此需要自定义用户认证方法...显然,对于多个字段的验证,如果某一个字段验证失败,提示该字段的错误信息,如果多个字段验证失败,则将这些字段的错误信息都显示出来。

    4.4K20

    Python进阶42-drf框架(四)

    必须登录、所有用户登录读写游客只读、自定义用户角色 # 认证通过:可以进入下一步校验(频率认证) # 认证失败:抛出异常,返回403权限异常结果 self.check_permissions...采用的是六表规则 三表规则: 1.用户表 2.角色表 3.权限表 五表规则: 1.用户表 2.角色表 3.权限表 4.用户角色关联表 5.角色权限关联表 Django六表规则: 1.用户表...""" ---- 登录后才能通过认证:视图 from rest_framework.views import APIView from rest_framework.generics import...,游客访问,读取 OK') def post(self,request,*args,**kwargs): return APIResponse(0, '已登录登录用户,读写...---- 权限类文件 在api目录下创建,permissions.py文件,在里面定义权限类 from rest_framework.permissions import BasePermission

    1.7K20

    Django REST Framework-常用的权限类型

    DjangoModelPermissionsOrAnonReadOnly:如果用户未经身份验证,允许读取API端点。如果用户已经验证身份,检查该用户是否具有执行特定操作的模型权限。...DjangoObjectPermissionsOrAnonReadOnly:如果用户未经身份验证,允许读取API端点。如果用户已经验证身份,检查该用户是否具有执行特定操作的模型实例权限。...return Response(content)这个视图只允许已经验证身份的用户访问。如果一个未经身份验证的用户尝试访问这个视图,他们将会被重定向到登录页面。...示例以下是一个更完整的示例,展示如何在Django REST Framework中使用权限。假设我们有一个名为Snippet的模型,它表示代码片段,我们希望只有创建该代码片段的用户才能够修改或删除它。...这个权限类检查当前请求的用户是否是代码片段的所有者,如果允许修改或删除。否则,只允许读取操作。

    1.5K20
    领券