django框架休息实现用户登录认证详解

  

1,安装
  

        pip安装djangorestframework      

 django框架休息实现用户登录认证详解

  

2,创建项目及应用
  

  

创建项目

  

创建应用

  

目录结构如图

  

 django框架休息实现用户登录认证详解

  

3,设置设置。py
  

  

设置数据库连接

        # MySQL增加MySQL连接   数据库={   “默认”:{   “发动机”:“django.db.backends.mysql”,   “主机”:127.0.0.1,   “端口”:“3306”,   “名称”:“dbname”, #数据库名   “用户”:“用户名”,   “密码”:“密码”,   “选项”:{   “sql_mode”:“传统”   },   }   }      

添加应用

        #应用程序定义   INSTALLED_APPS=[   …   “rest_framework”,   “api”,   )      

4,创建用户信息模型,在模型。py
  

        django。数据库导入模型   #创建您的模型。   类用户(models.Model):   用户名=models.CharField (max_length=32,独特的=True)   密码=models.CharField (max_length=32)   类元:   db_table=坝没А?   verbose_name=verbose_name_plural='用户信息表”   类userToken (models.Model):   用户名=models.OneToOneField(=坝没А?on_delete=models.DO_NOTHING)   令牌=models.CharField (max_length=60)   类元:   db_table=' user_token '   verbose_name=verbose_name_plural='用户令牌表”      

在项目下执行命令生成数据表

        python管理。py makemigrations   python管理。py迁移      

5,在视图。py文件里,编写登录验证程序
  

        django。快捷方式进口呈现   #创建你的观点。   导入的时间   从api导入模型   django。http进口JsonResponse   从rest_framework。视图导入APIView   类AuthView (APIView):   def post(自我,请求,* args, * * kwargs):   ret={“代码”:1000年,“味精”:没有}   试一试:   #参数是datadict形式   usr=request.data.get(用户名)   不是=request.data.get(密码)   # usr=request._request.POST.get(用户名)   #不是=request._request.POST.get(密码)   # usr=request.POST.get(用户名)   #不是=request.POST.get(密码)   打印(usr)   # obj=models.User.objects。过滤器(用户名=把睢?密码=' 123456 ')当代()   obj=models.User.objects.filter(用户名=usr密码=pas)当代()   打印(obj)   print(类型(obj))   打印(obj.username)   打印(obj.password)   如果不是obj:   ret(“代码”)=' 1001 '   ret[‘味精’]='用户名或者密码错误的   返回JsonResponse (ret)   #里为了简单,应该是进行加密,再加上其他参数   令牌=str (time.time ()) + usr   打印(令牌)   models.userToken.objects。update_or_create(用户名=obj,违约率={“令牌”:令牌})   ret[‘味精’]='登录成功的   # ret[“令牌”]=令牌   除了例外e:   ret(“代码”)=1002   ret[‘味精’]='请求异常”   返回JsonResponse (ret)      

6,在urls . py设置访问路径

        django。contrib进口管理   django。网址导入路径   从django.conf。url输入url   从api。视图导入AuthView   urlpattern=[   路径(admin/, admin.site.urls),   url (r/v1/认证/$ ^ api的,AuthView.as_view ()),   )      

7,通过邮差验证登录接口

  

 django框架休息实现用户登录认证详解

  

 django框架休息实现用户登录认证详解

  

如图显示登录成功。

  

遇到的坑:
  

  

视图获取柱参数的方式:

        #如下有三种方式获取参数,有些文章介绍,必须使用第二种,   #其实不然,具体使用哪种要看参数的传入形式而定,建议使用第一种,   #因为第一种支持键值和json格式,后面两种仅支持键值。   usr=request.data.get(用户名)   不是=request.data.get(密码)   # usr=request._request.POST.get(用户名)   #不是=request._request.POST.get(密码)   # usr=request.POST.get(用户名)   #不是=request.POST.get(密码)

django框架休息实现用户登录认证详解