基于Django框架的rest_framework的身份验证和权限解析

 更新时间:2023年05月17日 11:39:43   作者:想成为数据分析师的开发工程师  
Django 是一个基于 Python 的 Web 框架,可让您快速创建高效的 Web 应用程序,这篇文章主要介绍了基于Django框架的rest_framework的身份验证和权限解析,需要的朋友可以参考下

1. 概述

到目前为止,程序的API对任何人都可以编辑或删除,没有任何限制。我们希望有一些更高级的行为,进行身份验证和权限分配,以确保:

  • 数据始终与创建者相关联
  • 只有经过身份验证的用户才能创建数据
  • 只有数据的创建者可以更新或删除未经身份验证的请求
  • 若未经过身份验证只有只读访问权限

2. 使用admin应用的User

  • 配置好settings中的数据库配置
  • 将admin应用的数据库进行迁移
  • 使用 createsuperuser 创建用户

在这里插入图片描述

给可浏览的API添加登录功能 在根urls中添加:

from django.contrib import admin
from django.urls import path,include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('rest_app.urls')),
    path('api-auth/',include('rest_framework.urls')),
]

说明:

  • api-auth: 可以设置为任意符合规则的路径
  • 再次访问api页面,在页面的右上角会看到登录操作的按钮

在这里插入图片描述

此时,还是没有做到身份验证的功能

3. 视图中添加权限

from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from rest_app.models import *
from rest_app.app_serializer import StudentSerializer,ClassesSerializer
from django.http import JsonResponse,HttpResponse,Http404
from rest_framework.parsers import JSONParser
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.views import APIView
from rest_framework import mixins, generics
from rest_framework import permissions
# Create your views here.
'''
    新增        post    students/
    删除        delete  students/id/
    修改        put     students/id/
    查询一个    get     students/id/
    查询所有    get     students/
'''
# 优化代码:
class StudentsView(generics.ListCreateAPIView):
    # 指定需要操作的数据与序列化类
    queryset = Student.objects.all()
    serializer_class = StudentSerializer
    # 添加身份验证功能
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
class StudentDetailView(generics.RetrieveUpdateDestroyAPIView):
    queryset = Student.objects.all()
    serializer_class = StudentSerializer
    # 添加身份验证功能
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]

此时,再次访问页面就无法对其进行操作了,需要登录

在这里插入图片描述

在这里插入图片描述

到此这篇关于基于Django框架的rest_framework的身份验证和权限解析的文章就介绍到这了,更多相关Django-rest_framework身份验证和权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)

    matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)

    这篇文章主要介绍了matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python使用datetime.utcnow()问题解析

    python使用datetime.utcnow()问题解析

    这篇文章主要介绍了python使用datetime.utcnow()问题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Python TCP通信客户端服务端代码实例

    Python TCP通信客户端服务端代码实例

    这篇文章主要介绍了Python TCP通信客户端服务端代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python文件右键找不到IDLE打开项解决办法

    Python文件右键找不到IDLE打开项解决办法

    这篇文章主要介绍了Python文件右键找不到IDLE打开项解决办法,本文使用注册表解决了这个问题,需要的朋友可以参考下
    2015-06-06
  • Python中遍历列表的方法总结

    Python中遍历列表的方法总结

    在本篇文章里小编给大家分享了关于Python中遍历列表的方法以及知识点总结,有需要的朋友们学习下。
    2019-06-06
  • Python环境使用OpenCV检测人脸实现教程

    Python环境使用OpenCV检测人脸实现教程

    这篇文章主要介绍了Python环境使用OpenCV检测人脸实现教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python使用插值法画出平滑曲线

    python使用插值法画出平滑曲线

    这篇文章主要为大家详细介绍了python使用插值法画出平滑曲线,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • PyTorch零基础入门之构建模型基础

    PyTorch零基础入门之构建模型基础

    PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序,它是一个可续计算包,提供两个高级功能:1、具有强大的GPU加速的张量计算(如NumPy)。2、包含自动求导系统的深度神经网络
    2021-10-10
  • 利用Python编写一个简单的缓存系统

    利用Python编写一个简单的缓存系统

    今天来做一个最简单的例子,利用写一个最简单的缓存系统,以key``value的方式保持数据,并且需要将内容中的数据落地到文件,以便下次启动的时候,将文件的内容加载进内存中来,感兴趣的可以了解一下
    2023-04-04
  • Python表示矩阵的方法分析

    Python表示矩阵的方法分析

    这篇文章主要介绍了Python表示矩阵的方法,结合具体实例形式分析了Python表示矩阵的方法与相关操作注意事项,需要的朋友可以参考下
    2017-05-05

最新评论