基于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身份验证和权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python脚本框架webpy模板赋值实现

    python脚本框架webpy模板赋值实现

    这篇文章主要为大家介绍了python脚本框架webpy模板赋值实现示例过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11
  • Python中获取文件大小的四种办法

    Python中获取文件大小的四种办法

    这篇文章主要给大家介绍了关于Python中获取文件大小的四种办法,我们可以使用Python中的os模块来获取视频文件大小,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • 如何使用Python自动生成报表并以邮件发送

    如何使用Python自动生成报表并以邮件发送

    这篇文章主要介绍了如何使用Python自动生成报表并以邮件发送,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-10-10
  • Python配置文件yaml的用法详解

    Python配置文件yaml的用法详解

    YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。本文将详细介绍一下Python中yaml文件的用法,需要的可以参考一下
    2022-03-03
  • 简单的Python动态可视化神器,编程小白也能上手

    简单的Python动态可视化神器,编程小白也能上手

    这篇文章就来介绍简单的Python动态可视化神器,最近发现了一个宝藏动态可视化库,非常简单,即使是小白也能轻松上手。这个库就是motionchart,它能够用 pandas 的 dataframe 数据直接创建交互式的动态图表,下面来简单看一下如何使用。

    2021-10-10
  • Python使用socket模块实现简单tcp通信

    Python使用socket模块实现简单tcp通信

    这篇文章主要介绍了Python使用socket模块实现简单tcp通信,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python基于Dlib的人脸识别系统的实现

    Python基于Dlib的人脸识别系统的实现

    这篇文章主要介绍了Python基于Dlib的人脸识别系统的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 详解python如何优雅地关闭线程

    详解python如何优雅地关闭线程

    这篇文章主要介绍了python如何优雅地关闭线程,在并发编程中,我们可能会创建新线程,并在其中运行任务,可能由于一些原因,决定停止该线程,那么应该如何正确关闭线程呢?文中给了详细的解决方法,需要的朋友可以参考下
    2024-03-03
  • python实现经典排序算法的示例代码

    python实现经典排序算法的示例代码

    这篇文章主要介绍了python实现经典排序算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python利用 matplotlib 绘制直方图

    Python利用 matplotlib 绘制直方图

    这篇文章主要介绍了Python利用 matplotlib 模块绘制直方图相关属性和方法,具有一定的参考价值,需要的朋友可以参考一下
    2021-12-12

最新评论