首页 > 其他分享 >路飞-登录注册功能

路飞-登录注册功能

时间:2023-03-03 18:11:59浏览次数:39  
标签:手机号 登录 get mobile request 路飞 user 注册 msg

1.注册功能

因为路飞项目有很多不同的板块,所以我们分为两个app,一个home用来写主页的功能,一个user用来写用户相关功能。用户注册逻辑我们首先来写手机号是否已注册的接口:
user/views.py:

class UserView(GenericViewSet):
    @action(methods=['GET'], detail=False)
    def send_msg(self, request, *args, **kwargs):
        try:
            mobile = request.query_params.get('mobile')
            if mobile:
			# 首先判断是否能拿到手机号,如果能拿到就判断数据库中是否有该手机号
                User.objects.get(mobile=mobile)
			# 能拿到手机号,并且数据库存在该号码,就可以顺利走完try的子代码。就会继续走return APIResponse(msg='手机号存在')
            else:
                raise APIException('手机号必填')
				# 如果拿不到手机号,就主动抛异常,该异常会被全局异常捕获
        except Exception as e:
            return APIResponse(code=102,msg='该用户未注册')
			# 如果该用户在if子代码判断中,在数据库没有该用户信息,就返回用户未注册
        return APIResponse(msg='手机号存在')
		# 如果用户上传了手机号并且该号码存在于数据库中,说明该号码存在。

代码改良:我们可以直接在try子代码中查找数据库中是否有此号码,如果找不到直接报错,代码可以更简洁:

class UserView(GenericViewSet):
    @action(methods=['GET'], detail=False)
    def send_msg(self, request, *args, **kwargs):
        try:
		'''try子代码拿到'''
            mobile = request.query_params.get('mobile')
            User.objects.get(mobile=mobile)  # print(res)  # root 如果有值拿到的是该号码对应的用户名。如果拿不到这一步会报错,会走except这一步
        except Exception as e:
            raise e
			# 报错之后会走全局异常捕获
        return APIResponse(msg='手机号存在')

全局异常捕获:
utils.common_exceptions.py:

# 只要走到这个函数里说明已经出异常
def exception_handler(exc, context):
    request = context.get('request')
    view = context.get('view')
    ip = request.META.get('REMOTE_ADDR')
    if request.user.pk:
        user_id = request.user.pk
    else:
        user_id = '匿名用户'
    path = request.get_full_path()

    response = drf_exception_handler(exc, context)
    
    if response:

        logger.warning('drf出异常,异常是:[%s]' % str(exc))
        # drf错误显示具体信息,如果取不到显示服务器异常,请联系系统管理员
        res = Response({'code': 999, 'msg': response.data.get('detail', '服务器异常,请联系系统管理员')})
    else:
        # django的异常,直接从日志中找错误django_admin_log
        logger.error('用户[%s],ip地址为[%s],访问地址为[%s],执行视图函数为[%s],错误是[%s]' % (user_id,  ip, path, str(view), str(exc)))
        res = Response({'code': 888,
                        'msg': str(exc)})
    return res

dev.py:

REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'utils.common_exceptions.exception_handler',
}

标签:手机号,登录,get,mobile,request,路飞,user,注册,msg
From: https://www.cnblogs.com/ERROR404Notfound/p/17176595.html

相关文章

  • 路飞项目---day07()
    昨日回顾#GIt内容大回顾#1版本管理软件:git,svn -代码合并-代码版本管理-协同开发,合并代码#2git跟svn区别#3git安装:相应平台软件,下载完成,一路下......
  • 【前端开发】一个滑动滑块校验登录的组件思路(用vue写的)
    <template><el-dialog:visible.sync="dialogVisible"custom-class="slideVerifyDialog":close-on-click-modal="false"title="身份验证"widt......
  • 为开源项目贡献代码、pycharm使用git、登录注册功能分析、手机号是否存在接口、多方式
    目录1为开源项目贡献代码2pycharm使用git2.1先配置pycharm使用git3登录注册功能分析4手机号是否存在接口4.2视图函数模版5多方式登录接口5.1视图类5.2序列化类6......
  • 统一单点登录&跳转
    在客户端输入地址(xxx.xxx.xxx/controll/方法/参数)服务端到controll层进行数据匹配 跳转前端响应情况图片跳转与列表跳转图片:编写跳转函数列表公用图片跳转函数,@c......
  • springcloud之nacos(二)Dubbo 融合 Nacos 成为注册中心
    一、项目依赖首先在父pom中定义以下依赖管理器信息:(使用2.1版本nacos,提前安装)<properties><java.version>1.8</java.version><project.build.sourceEncoding......
  • 路飞项目day05
    昨日内容回顾#1前端首页#2轮播图接口Banner.vue---->created--->axios--->渲染在页面上v-if#3git介绍-软件,版本管理软件-代码版本管......
  • 路飞1
    后台日志封装日志的作用就是用来记录一些错误信息和操作的,所以我们在以后的项目中都尽量不要出现print了,以后都使用日志logger.info(),以后只需要调整日志级别就好了日......
  • 路飞首页前端
    路飞前台的全局CSS,全局配置文件整理项目App.vue<template><divid="app"><router-view/></div></template>router/index.jsconstroutes=[{pa......
  • 路飞后台
    后台主页模块设计1.首页要写哪些接口轮播图接口推荐课程接口2.创建首页app在apps文件夹下执行python../../manage.pystartapphome3.创建......
  • 路飞
    今日内容1.git多分支2.git远程仓库3.ssh方式连接远程仓库4.协同开发5.冲突解决6.线上分支合并7.远程仓库回滚1.git多分支#为什么要有分支 -可以保证,主分支的版......