django API 中接口的互相调用实例


Posted in Python onApril 01, 2020

我就废话不多说了,还是直接上代码吧!

url = "http://%s:%s/api-token-auth/" % (ip, port)
 query_args = {
  "username": username,
  "password": password
 }
 resp = requests.post(url=url, data=query_args)
 token = json.loads(resp.text)["token"]
 headers = {"Authorization": "JWT" + " " + token}  # 拿到token,拼成headers


 post_url = "http://%s:%s/message/message-level-two/"% (ip, port)
 data = {
  "app": app,
  "url": url,
  "message_id": message_id,
  "head": head,
  "title": title,
  "userprofile_id_list": userprofile_id_list
 }
 headers = self.headers
 requests.post(url=post_url, data=data, headers=headers)

获取当前请求的ip和端口

host_ip, host_port = self.request.META.get("HTTP_HOST").split(':')[0], \
        self.request.META.get("HTTP_HOST").split(':')[1]

常见的请求头如下:

CONTENT_LENGTH ? The length of the request body (as a string).
CONTENT_TYPE ? The MIME type of the request body.
HTTP_ACCEPT ? Acceptable content types for the response.
HTTP_ACCEPT_ENCODING ? Acceptable encodings for the response.
HTTP_ACCEPT_LANGUAGE ? Acceptable languages for the response.
HTTP_HOST ? The HTTP Host header sent by the client.
HTTP_REFERER ? The referring page, if any.
HTTP_USER_AGENT ? The client's user-agent string.
QUERY_STRING ? The query string, as a single (unparsed) string.
REMOTE_ADDR ? The IP address of the client.
REMOTE_HOST ? The hostname of the client.
REMOTE_USER ? The user authenticated by the Web server, if any.
REQUEST_METHOD ? A string such as "GET" or "POST".
SERVER_NAME ? The hostname of the server.
SERVER_PORT ? The port of the server (as a string).

获取请求头内容的用META

示例:

def index(request):
 ip = request.META.get("REMOTE_ADDR")
 return HttpResponse("你的ip地址是%s"%ip)

http://10.254.30.27/1
self.kwargs[‘pk'] # 可以拿到后边的 1

补充知识:django 使用requests请求相关接口

1、如果是get请求接口,并且需要带相关参数的话,可以借鉴下面的代码:

import requests
 
from django.http import JsonResponse
 
def get_info(request):
 url = 'http://www.baidu.com'
 params = {'id': 1, 'user': 'lin'}
 response = requests.get(url=url, params=params)
 return JsonResponse(response.text, safe=False)

这样将会返回一串json的字符串数据。

2、如果是post请求接口,并且需要带相关参数的话,可以借鉴下面的代码:

import requests
 
from json import dumps
from django.http import JsonResponse
 
def get_info(request):
 url = 'http://www.baidu.com'
 data = {'id': 1, 'user': 'lin'}
 response = requests.post(url=url, data=dumps(data))
 return JsonResponse(response.text, safe=False)

注:

(1)、其中必须注意的为data这个参数,必须要用dumps(data)转换一下,不然会报错,response状态码为400,bad request error 400 while using python requests.post function。

(2)、如果需要在post请求底下加相关请求头的话,可以借鉴下面的代码:

import requests
 
from json import dumps
from django.http import JsonResponse
 
def get_info(request):
 url = 'http://www.baidu.com'
 data = {'id': 1, 'user': 'lin'}
 headers = {'content-Type': 'application/json', 'Accept': '*/*'}
 response = requests.post(url=url, data=dumps(data), headers=headers)
 return JsonResponse(response.text, safe=False)

这里如果response的状态码报415错误的话,即HTTP请求415错误 ? 不支持的媒体类型(Unsupported media type),这就是content-Type可能写错了,就要注意一下了,因为通常接口会封装一些参数到请求头底下。

以上这篇django API 中接口的互相调用实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
python创建关联数组(字典)的方法
May 04 Python
详解Python的Django框架中manage命令的使用与扩展
Apr 11 Python
python3操作mysql数据库的方法
Jun 23 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
Python实现图片识别加翻译功能
Dec 26 Python
python如何从键盘获取输入实例
Jun 18 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
python 元组和列表的区别
Dec 30 Python
pycharm如何设置官方中文(如何汉化)
Dec 29 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 #Python
Python greenlet和gevent使用代码示例解析
Apr 01 #Python
Django-rest-framework中过滤器的定制实例
Apr 01 #Python
Python如何操作office实现自动化及win32com.client的运用
Apr 01 #Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 #Python
Python AutoCAD 系统设置的实现方法
Apr 01 #Python
django实现模型字段动态choice的操作
Apr 01 #Python
You might like
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP中的reflection反射机制测试例子
2014/08/05 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
超级退弹代码
2008/07/07 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python中文乱码的解决方法
2013/11/04 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
pytorch 实现模型不同层设置不同的学习率方式
2020/01/06 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
Pandas中DataFrame基本函数整理(小结)
2020/07/20 Python
Python代码注释规范代码实例解析
2020/08/14 Python
一些高难度的SQL面试题
2016/11/29 面试题
教师自我评价范例
2013/09/24 职场文书
汽车专业毕业生自荐信
2013/11/03 职场文书
机电工程学生自荐信范文
2013/12/07 职场文书
求职简历的自我评价
2014/01/31 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
建筑工地大门标语
2014/06/18 职场文书
文员岗位职责
2015/02/04 职场文书
Go 语言结构实例分析
2021/07/04 Golang
SQL语句多表联合查询的方法示例
2022/04/18 MySQL
vue修饰符.capture和.self的区别
2022/04/22 Vue.js