python:使用Djangorestframework编写post和get接口
1、安装django
pip install django
2、新建一个django工程
python manage.py startproject cainiao_monitor_api
3、新建一个app
python manage.py startapp monitor
4、安装DRF
pip install djangorestframework
5、编写视图函数
views.py
from rest_framework.views import APIView
import json
import cx_Oracle
from django.http import HttpResponse
# Create your views here. class MonitorMsg(APIView):
# 此处方法名只能为post或者get等名称,这个名称就是接口类型
def post(self, request):
"""
查询某一天的数据;
此方法请求类型为post,根据urls.py中的配置,该接口地址为:/monitorMsg,
传入参数方式以下三种都可以:json方式或者form-data或者x-www-form-urlencoded,
request.data['datetime']方式都可以解析到入参的值
:param request:
:return: 返回CAINIAO_MONITOR_MSG表中所有的异常信息
"""
# 如果前台通过form-data格式传入参数,则使用request.POST['key']此方法获取参数的值
# datetime = request.POST['datetime']
# 【推荐】如果前台通过json方式或者form-data或者x-www-form-urlencoded传入参数,则使用request.data['key']方法均可获取对应的value
datetime = request.data['datetime']
print(request.data)
sql = "select * from CAINIAO_MONITOR_MSG t WHERE to_char(t.CREATE_TIME,'yyyy-MM-dd') like '%s' " % datetime
# 连接数据库
conn = cx_Oracle.connect('name', 'pwd', '10.*.*.*:1521/sid')
# 创建游标
cursor = conn.cursor()
# 执行sql语句
cursor.execute(sql)
# 提交数据
conn.commit()
# 获取查询数据类型为list
data = cursor.fetchall()
# 关闭游标
cursor.close()
# 断开数据库连接
conn.close()
# 新建空列表用来放数据
msg_list = []
# 遍历查询到的数据
for i in data:
# 创建空的字典,存放对应的字段信息
msg_dict = {}
# 将查询到的数据作为value对应到字典相应key
msg_dict['id'] = i[0]
msg_dict['scenario_code'] = i[1]
msg_dict['msg'] = i[2]
msg_dict['status'] = i[4]
# 将遍历的数据存放到list中
msg_list.append(msg_dict)
# 定义最终的返回数据样式
res_data = {'count': len(msg_list), 'data': msg_list}
# 将res_data序列化为json对象,并返回
return HttpResponse(json.dumps(res_data), content_type="application/json")
6、编写路由
urls.py
from django.contrib import admin
from django.urls import path
from monitor.views import MonitorMsg urlpatterns = [
path('admin/', admin.site.urls),
# 接口的url:http://127.0.0.1:8000/monitorMsg
path('monitorMsg', MonitorMsg.as_view()),
]
7、启动服务
python manage.py runserver
8、访问测试



python:使用Djangorestframework编写post和get接口的更多相关文章
- 【Python】djangorestframework 基于django框架的接口开发
官网:http://www.django-rest-framework.org/#installation 下载:https://pypi.python.org/pypi/djangorestfram ...
- Python OS模块标准库的系统接口及操作方法
Python OS模块标准库的系统接口及操作方法 os.name 返回当前操作系统名,定义了'posix','nt','mac','os2','ce','java'(我使用win7/python3.1 ...
- Python网络编程——编写一个简单的回显客户端/服务器应用
今天将python中socket模块的基本API学习完后,照着书上的实例编写一个套接字服务器和客户端.采用python3.5版本,在注释中会标明python2和python3的不同之处. 1.代码 ( ...
- 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试
相关随笔: Hadoop-1.0.4集群搭建笔记 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控 用python + hadoop streami ...
- 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控
写在前面 相关随笔: Hadoop-1.0.4集群搭建笔记 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 用python + hado ...
- 用python + hadoop streaming 编写分布式程序(三) -- 自定义功能
又是期末又是实训TA的事耽搁了好久……先把写好的放上博客吧 相关随笔: Hadoop-1.0.4集群搭建笔记 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍 ...
- Linux 下Python调用C++编写的动态库
在工程中用到使用Python调用C++编写的动态库,结果报如下错误: OSError: ./extract_str.so: undefined symbol: _ZNSt8ios_base4InitD ...
- vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete)
vue-cli3.x中使用axios发送请求,配合webpack中的devServer编写本地mock数据接口(get/post/put/delete) 手把手式笔记 Axios配置 安装 axios ...
- python调用腾讯云短信接口
目录 python调用腾讯云短信接口 账号注册 python中封装腾讯云短信接口 python调用腾讯云短信接口 账号注册 去腾讯云官网注册一个腾讯云账号,通过实名认证 然后开通短信服务,创建短信应用 ...
随机推荐
- P4560 [IOI2014]Wall 砖墙
题目描述 给定一个长度为 nn且初始值全为 00的序列.你需要支持以下两种操作: Add L, R, hL,R,h:将序列 [L, R][L,R]内所有值小于 hh的元素都赋为 hh,此时不改变高度大 ...
- HDU - 5571 :tree (动态点分治 异或)
题意:给定一棵树,有点权a[],有边权. 现在有M次修改点权的操作,输出每次修改后,Σ(a[i]^a[j])*dis(i,j); 思路:因为待修改,我们需要快速得到以及修改一个点到其他所有点的信息. ...
- Jquery无须浏览实现直接下载文件
一.常用方式: 1.通常GET方式 后面带明文参数,不安全. window.location.href = 'http://localhost:1188/FileDownload.aspx?token ...
- IntToBinaryString
void IntToBinaryString(int devisor,char* pBinStr) { int i; int remainder; ;i<;i++) { remainder=de ...
- 让更多浏览器支持html5元素的简单方法
当我们试图使用web上的新技术的时候,旧式浏览器总是我们心中不可磨灭的痛!事实上,所有浏览器都有或多或少的问题,现在还没有浏览器能够完整的识别和支持最新的html5结构元素.但是不用担心,你依然可以在 ...
- Dubbo源码分析:ThreadPool
定义了通过URL对象作为参数获取Executor对象的getExecutor方法.所有实现ThreadPool接口的类都是基于ThreadPoolExecuotr对象来实现的. 类图
- 题解 UVa11489
题目大意 多组数据,每组数据给定一个整数字串,两个人每次从中抽数,要求每次剩余的数都是 \(3\) 的倍数,请求出谁会获胜. 分析 由于 \(p-1\) 的因数的倍数在 \(p\) 进制下的各位数字之 ...
- 域渗透:SPN(ServicePrincipal Names)的利用
SPN 简介:服务主体名称(SPN:ServicePrincipal Names)是服务实例(可以理解为一个服务,比如 HTTP.MSSQL)的唯一标识符.Kerberos 身份验证使用 SPN 将服 ...
- 开源项目 07 AutoMapper
using AutoMapper; using Newtonsoft.Json; using System; using System.Collections.Generic; using Syste ...
- [RN] React Native 常用命令行
[RN] React Native 常用命令行 1.查看当前版本 react-native --version 或 react-native -v 2.创建指定版本的React Native项目 1) ...