首页>>后端>>Python->django怎么保护api(django修改数据)

django怎么保护api(django修改数据)

时间:2023-12-02 本站 点击:0

本篇文章首席CTO笔记来给大家介绍有关django怎么保护api以及django修改数据的相关内容,希望对大家有所帮助,一起来看看吧。

本文目录一览:

1、Django rest framework + drf-yasg 关于 api 文档 web 页面数据修改方法2、python(12)实践Django-Restful API3、Django REST framework框架之GET, POST, PUT, PATCH, DELETE等API请求接口设计4、(二)Django REST实践:最简单的REST API实现

Django rest framework + drf-yasg 关于 api 文档 web 页面数据修改方法

operation_summary :操作名称如下图

operation_description :接口介绍 如下图

operation_id :操作方法名如下图

manual_parameters : 修改 Parameters 中参数说明

request_body :post 发送内容 如下图

responses :响应内容 如下图

enum : 定义改字段可选的参数值,默认写第一个。如下图

description : 字段描述

type : 字段需要什么类型的数据

             TYPE_OBJECT = "object"

             TYPE_STRING = "string"

             TYPE_NUMBER = "number"

             TYPE_INTEGER = "integer"

             TYPE_BOOLEAN = "boolean"

             TYPE_ARRAY = "array"

             TYPE_FILE = "file"

format : 进行验证的方式

             FORMAT_DATE = "date"

             FORMAT_DATETIME = "date-time"

             FORMAT_PASSWORD = "password"

             FORMAT_BINARY = "binary"

             FORMAT_BASE64 = "bytes"

             FORMAT_FLOAT = "float"

             FORMAT_DOUBLE = "double"

             FORMAT_INT32 = "int32"

             FORMAT_INT64 = "int64"

             FORMAT_EMAIL = "email"

             FORMAT_IPV4 = "ipv4"

             FORMAT_IPV6 = "ipv6"

             FORMAT_URI = "uri"

             FORMAT_UUID = "uuid"

             FORMAT_SLUG = "slug"

             FORMAT_DECIMAL = "decimal"

python(12)实践Django-Restful API

关于Restful API,可阅读 理解RESTful架构 和 RESTful API 设计指南 。

在Django中要实现Restful API比较简单,有现成的的框架可用。

Django REST framework框架之GET, POST, PUT, PATCH, DELETE等API请求接口设计

一、API接口功能需求:设计一些接口URL,让前端/客户请求这个URL去获取数据并显示,更改数据(增删改查),达到前后端分离的效果

二、设计逻辑:通过http协议请求方式GET、POST、PUT、PATCH、DELETE设计符合RESTful规范的api接口也就是URL

三、简易源码:

3.序列化serializers

#导入模型类和rest_framework序列化模块serializers

from .models import Article

from rest_framework import serializers

#定义序列化类,使用继承ModelSerializer方法

class ArticleSerializer(serializers.ModelSerializer):

class Meta:

model = Article #指定序列化的模型类

fields = '_ all _' #选取序列化字段,此处可自行选取字段

4.视图函数views

from django.http import HttpResponse

from django.views.decorators.csrf import csrf_exempt

from .models import Article

from .serializers import ArticleSerializer

from rest_framework.renderers import JSONRenderer

from rest_framework.parsers import JSONParser

#调用csrf装饰器csrf_exempt模块,解决跨域访问问题

#JSONRenderer它将Python的dict转换为JSON返回给客户端

#JSONParser 负责将请求接收的JSON数据转换为dict

#写法一

#在需要跨域的视图上调用装饰器@csrf_exempt

@csrf_exempt

def article_list(request):

if request.method == 'GET':

arts = Article.objects.all() #获取模型类数据

ser = ArticleSerializer(instance=arts,many=True) #序列化数据instance

#下一步用rest_framework方法里的JSONRenderer方法渲染数据

json_data = JSONRenderer().render(ser.data)

return HttpResponse(json_data,content_type='application/json',status=200)

#写法二

class JSONResponse(HttpResponse):

def _ init (self,data,**kwargs):

content = JSONRenderer().render(data)

kwargs['content_type'] = 'application/json'

super(JSONResponse, self)._ init (content,**kwargs)

#根据id进行增删改操作接口

@csrf_exempt

def article_detail(request,id):

try:

art = Article.objects.get(id=id)

except Article.DoesNotExist as e:

return HttpResponse(status=404)

备注:

*写法二中定义JSONResponse类将返回的数据data与content_type返回类型做了封装

*API接口

GET/POST

GET/PUT/PATCH/DELETE

*Postman测试效果图

(二)Django REST实践:最简单的REST API实现

本小节大概要花费10分钟。

在前面,我们已经学会了Django如何获得HTTP请求中的内容,以及如何获取HTTP请求的body。接下来我们就来写一个最简单的API。这个API要求在请求的HTTP body中放入JSON格式的文本,并在解析文本后进行处理,返回JSON格式的数据。

我们定义 API的URL为/api/sum/,功能是为两个数求和,并返回。

request中body的格式为:

response的格式为:

response中,我们的数据结构稍微有点复杂。

之后我们所有的REST API都会以这种统一的格式返回数据,两个不同REST API所返回内容的主要区别在data域上。

在(一)中,我们建立了一个叫做task_platform的Django项目。目录结构如下:

进入Django项目目录,并编辑task_platform中的views.py文件。

其中:

编辑task_platform/urls.py,将我们刚刚实现的API处理函数加入到路由表中。

运行Django server:

用Postman模拟请求,可以看到:

经过练习,我们已经了解如何实现一个简单的REST API了!我们之后的API都是建立在这个通讯模型之上的(当然还有一些使用GET方法的API)。在后面,我们将看看,如何通过这种模式,实现一个用户认证系统的REST API。

结语:以上就是首席CTO笔记为大家整理的关于django怎么保护api的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django修改数据、django怎么保护api的相关内容别忘了在本站进行查找喔。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/10314.html