使用Django自带的登录模块实现登录功能(包含token实现))

  • Post author:
  • Post category:其他


1.创建虚拟环境,创建项目mysite,创建app user  ,

创建超级管理员  python manage.py createsuperuser (创建的的用户名密码是接下拉要用的)

2.前端发送登录请求。

//前端使用vue,axios需要自己做相关配置
//LoginForm:{
//      		username: "admin",
//      		password: 123456
//      	},
const {data:res} = this.$axios.get("api/users/login",{
  				params:this.LoginForm
  			})

3.在Django虚拟环境中:

pip install  pip install djangorestframework

配置setting文件:

( 避免因为Django版本问题报错建议setting中首先  import os ,目前我的版本是3.1.3)

# 避免报错先导入os
import os


INSTALLED_APPS = [
    # 在app中注册一下
    'rest_framework.authtoken',
]

# 配置token验证机制,可以暂时不需要
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    )
}

4.配置url

# 在项目url中
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/users/', include('users.urls'))
]


# 在app url中
from django.urls import path 
from . import views
urlpatterns = [
	path("login", view = views.login),
]

5.在app中处理请求视图函数

from django.shortcuts import render

from rest_framework.authtoken.models import Token
from django.http.response import JsonResponse
from django.contrib.auth import authenticate
# Create your views here.

# 登录功能实现
def login(request):
    # 从请求中获取用户名、密码
    username = request.GET.get('username')
    password = request.GET.get('password')
    user = authenticate(username=username, password=password)

    if user != None :
        #删除原来的token 
        old_token = Token.objects.filter(user=user)
        old_token.delete()
        #创建新的token并传递给前端
        token = Token.objects.create(user=user)
        print(token)
        return JsonResponse({
                "status":200,
                "message":"成功登录",
                "token": token.key
            })
    else:
        return JsonResponse({
                "status":201,
                "message":"登录失败,请校验用户名或者密码",
            })

6. 测试,成功完成登录并派发token (用户名密码是第一步创建的用户名密码)



版权声明:本文为qq_37127153原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。