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 相关文章推荐
使用python Django做网页
Nov 04 Python
Python数组条件过滤filter函数使用示例
Jul 22 Python
python制作花瓣网美女图片爬虫
Oct 28 Python
Python卸载模块的方法汇总
Jun 07 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
python字典的setdefault的巧妙用法
Aug 07 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
python 函数中的参数类型
Feb 11 Python
python如何实时获取tcpdump输出
Sep 16 Python
Python如何使用ElementTree解析xml
Oct 12 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
Jan 27 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
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
php 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
在Django的URLconf中使用命名组的方法
2015/07/18 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
python实现杨辉三角思路
2017/07/14 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
厨房工作人员岗位职责
2013/11/15 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
护士工作心得体会
2016/01/25 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP