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

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 (用户名密码是第一步创建的用户名密码)

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Django自带的Authentication模块提供了一套完整的用户认证和授权系统,包括用户注册、登录、退出登录、重置密码等功能。下面是使用Django自带的Authentication模块的步骤: 1. 在settings.py中配置AUTHENTICATION_BACKENDS和INSTALLED_APPS,确保Authentication模块被正确加载。 ```python AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', ] INSTALLED_APPS = [ # ... 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', # ... ] ``` 2. 在urls.py中配置登录、退出登录、重置密码等视图函数的路由。 ```python from django.urls import path from django.contrib.auth import views as auth_views urlpatterns = [ # 登录 path('login/', auth_views.LoginView.as_view(), name='login'), # 退出登录 path('logout/', auth_views.LogoutView.as_view(), name='logout'), # 密码重置 path('password_reset/', auth_views.PasswordResetView.as_view(), name='password_reset'), # 密码重置确认 path('password_reset_confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'), # 密码重置完成 path('password_reset_done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'), # 密码重置发送邮件 path('password_reset_email/', auth_views.PasswordResetEmailView.as_view(), name='password_reset_email'), ] ``` 3. 在模板中使用Django自带登录、退出登录、重置密码等表单。 ```html {% if not user.is_authenticated %} <form method="post" action="{% url 'login' %}"> {% csrf_token %} <label for="username">Username:</label> <input type="text" name="username"><br> <label for="password">Password:</label> <input type="password" name="password"><br> <input type="submit" value="Login"> </form> {% else %} <p>Welcome, {{ user.username }}!</p> <form method="post" action="{% url 'logout' %}"> {% csrf_token %} <input type="submit" value="Logout"> </form> {% endif %} ``` 4. 使用Django自带的User模型进行用户管理。 ```python from django.contrib.auth.models import User # 创建用户 user = User.objects.create_user(username='testuser', password='testpass') # 设置用户属性 user.first_name = 'Test' user.last_name = 'User' user.email = 'testuser@example.com' user.is_staff = True user.is_superuser = True # 保存用户 user.save() # 验证用户 from django.contrib.auth import authenticate user = authenticate(username='testuser', password='testpass') if user is not None: # 登录成功 else: # 登录失败 ``` 以上就是使用Django自带的Authentication模块的基本方法,具体使用时可以根据需求进行扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值