当前位置: 首页 > news >正文

DjangoRF-14-创建request子应用

注意,本应该是requests模块,为了区分,避免错误,用request
1、进入apps,创建request django-admin startapp request
2、因为只发送请求,没有数据库相关,不需要model。
3、进行序列化

from rest_framework import serializers

这里没u有进行引入ModeSer

class SingleRequestSerializer(serializers.Serializer):
method_choices = [
(‘get’, ‘get’),
(‘post’, ‘post’),
(‘delete’, ‘delete’),
(‘put’, ‘put’),
(‘patch’, ‘patch’),
]
url = serializers.CharField(help_text=‘url’, label=‘url’)
method = serializers.ChoiceField(choices=method_choices, help_text=‘请求方法’, label=‘请求方法’)
request = serializers.JSONField(help_text=‘请求参数’, required=False, label=‘请求参数’, default={})

def validate_request(self, value):"""解决json数据为空的问题"""if value.get('json') == {}:value.pop('json')return value

4views代码
from django.shortcuts import render

Create your views here.

import base64

import requests

from rest_framework.decorators import api_view
from rest_framework.response import Response

from .serializers import SingleRequestSerializer

@api_view(http_method_names=[‘POST’])
def request_view(request, format=None):
# 1. 接受请求数据并校验
serializer = SingleRequestSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
# 2. 发送请求
data = serializer.validated_data
res = requests.request(method=data[‘method’], url=data[‘url’], **data[‘request’])
# 3. 组织响应数据并返回
res_data = {
‘status_code’: res.status_code,
‘headers’: dict(res.headers),
‘cookies’: dict(res.cookies)
}
content_type = res_data[‘headers’].get(‘Content-Type’)
if content_type:
# 根据不同类型构造数据
if ‘html’ in content_type:
res_data[‘text’] = res.text
elif ‘json’ in content_type:
res_data[‘json’] = res.json()
else:
res_data[‘content’] = base64.b64encode(res.content).decode()
else:
res_data[‘content’] = base64.b64encode(res.content).decode()

return Response(res_data, status=200)

5、urls的代码
from django.urls import path

from .views import request_view

urlpatterns = [
path(‘’, request_view, name=‘request’)
]

6.进行调试

http://www.lryc.cn/news/415331.html

相关文章:

  • SOMEIP_ETS_005:检查字节序
  • 为什么要对医疗器械进行网络安全评估?
  • 沃尔玛1P账号的强悍作用重要反映在那些方面?——WAYLI威利跨境助力商家
  • 学习python你不能不知道的几个接单平台!实现如月上万不是梦
  • Golang面试题三(map)
  • [windows10]win10永久禁用系统自动更新操作方法
  • 《西行取经:大学生编程之路的禅悟与陷阱规避2》
  • JVM从入门到放弃
  • 中国地面太阳总辐射逐日资料
  • 微商来客小程序系统源码分享
  • Java面试题--JVM大厂篇之Parallel GC与其他垃圾回收器的对比与选择
  • 十分钟带你速通 Vue 组件
  • 基于RK3588+AI支持能源在线监测系统应用的AIOT产品方案
  • 山东大学考研机试题——整数序列
  • 一口酒一口水,不宜喝醉
  • AI6-PPOCRLabel带GPU训练
  • Unity四元数线性插值Lerp
  • Makefile 语法
  • 【运维项目经历|039】Ceph高性能云存储集群部署与优化
  • 算法刷题之哈希表
  • 【linux】linux中定时任务的巧妙运用,让你轻松解放双手
  • 【复旦微FM33 MCU 外设开发指南】系统篇——时钟
  • Android Graphics 显示系统 - 计算FPS的原理与探秘Present Fence
  • 图论:1857. 有向图中最大颜色值(拓扑排序+动态规划)
  • pytorch学习笔记3 tensor索引和切片
  • 学习记录——day23 多进程编程
  • 英特尔股市暴跌,财报亏损 | HuggingFace 实现盈利 |iOS18 Beta 苹果AI
  • C++入门基础(二)
  • fabricjs 实现图像的二值化功能
  • 修改本地hosts文件及外部访问机器本地hosts文件后,rancher UI网站仍然不能访问