下面,我将仔细分析一次请求的旅程:

web端发出一个请求报文,到获得服务器的响应报文结束。

1.打开浏览器,输入URL,进入API页面:

http://127.0.0.1:8000/api/salt

2.输入命令,按下确认按钮

根据URLconf,由上到下进行匹配,最终将请求报文(request对象)交给cmd方法

url(r'^api/salt',web_views.cmd,name='cmd'),
这里说明一下:request对象有很多属性,其中用的最多的要数POST属性,他是类字典对象的一个实例对象

这时cmd方法就是一个API,它接受并处理request对象并且返回response对象到html文件

def cmd(request):
if request.POST:
command = CommandForm(request.POST)
a = print(request.POST)
# host_ip = request.POST.get('host_ip')
func = request.POST.get('func')
# args = request.POST.get('args')
# command.host_ip = host_ip
# command.func = func
# command.args = args
# command.save()
result = os.popen(func).read()
return render(request,'salt_api.html',{'result':result,'post':request.POST,})
else:
command = CommandForm()
return render(request,'salt_api.html',{'form':command})
response对象被送给了html文件

下面就是在html中如何展示response对象

<h3>执行结果:</h3><pre style="background-color: cornsilk; font-family: '微软雅黑';">{{result|safe}}</pre>
<h3>post对象:</h3> <pre>{{post}}</pre>

3.返回响应报文到客户端浏览器

下面使我们看到的浏览器结果

好了!以上就是一次请求开始,到获得结果的详细过程!

Django中API分析的更多相关文章

  1. Windows系统调用中API的3环部分(依据分析重写ReadProcessMemory函数)

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中API的3环部分 一.R3环API分析的重 ...

  2. 关于Django中的数据库操作API之distinct去重的一个误传

    转载自http://www.360doc.com/content/18/0731/18/58287567_774731201.shtml django提供的数据库操作API中的distinct()函数 ...

  3. Netty源码分析之ByteBuf(一)—ByteBuf中API及类型概述

    ByteBuf是Netty中主要的数据容器与操作工具,也是Netty内存管理优化的具体实现,本章我们先从整体上对ByteBuf进行一个概述: AbstractByteBuf是整个ByteBuf的框架类 ...

  4. Django QuerySet API文档

    在查询时发生了什么(When QuerySets are evaluated) QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作.只要你查询的时候才真正的操作数据 ...

  5. django源码分析——处理请求到wsgi及视图view

    本文环境python3.5.2,django1.10.x系列 根据前上一篇runserver的博文,已经分析了本地调试服务器的大致流程,现在我们来分析一下当runserver运行起来后,django框 ...

  6. celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决

    今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新 ...

  7. [Python][flask][flask-wtf]关于flask-wtf中API使用实例教程

    简介:简单的集成flask,WTForms,包括跨站请求伪造(CSRF),文件上传和验证码. 一.安装(Install) 此文仍然是Windows操作系统下的教程,但是和linux操作系统下的运行环境 ...

  8. Django中的Model继承

    Django 中的 model 继承和 Python 中的类继承非常相似,只不过你要选择具体的实现方式:让父 model 拥有独立的数据库:还是让父 model 只包含基本的公共信息,而这些信息只能由 ...

  9. Django中生成PDF(一)

    Django中生成PDF(一) 需求描述:     某网站与其用户达成一致的协议,每份协议中都有用户相关的独特信息,且还需要生成PDF并存档.PDF文件中需要有企业LOGO.文字描述等信息.其展现形式 ...

随机推荐

  1. 【Python笔记】Python语言基础

    Python是一种解释性(没有编译).交互式.面向对象的语言 1.安装python编译器 版本:Python2.7比较普遍,Python不是向下兼容的软件,因此Python3.x有些东西不好找资料 2 ...

  2. React Native Navigator组件回调

    在push的时候定义回调函数: this.props.navigator.push({ component: nextVC, title: titleName, passProps: { //回调 g ...

  3. 利用hsdis和JITWatch查看分析HotSpot JIT compiler生成的汇编代码

    http://blog.csdn.net/hengyunabc/article/details/26898657

  4. winfrom GDI知识

     c#使用GDI+简单绘图 http://blog.csdn.net/smartsmile2012/article/details/30255303 NET3.5 GDI+ 图形操作1 http:// ...

  5. 狗日的Javascript中的闭包

    前面的话: 闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它.下面是作者从作用域链慢慢讲到 ...

  6. USB High Speed Inter-Chip (HSIC) IP: What is it? And why should I use it?

    来源: https://www.synopsys.com/dw/dwtb.php?a=hsic_usb2_device What is HSIC? HSIC (High-Speed Inter-Chi ...

  7. htmltestrunner解决错误日志出界问题

    扩大背后的区域放大,让它看起来没有出界 .popup_window {    display: none;    position: relative;    left: 0px;    top: 0 ...

  8. XSS-Proxy

    关于XSS(cross site scripting),相信对此有过研究的人已经感受到了它的“魅力”,权威机构也公布了最近的安全数据,xss已经上升为第二大网络安全隐患: 于此我想通过此文浅析一下xs ...

  9. Vue基础知识总结(二)

    一.解决网速慢的时候用户看到花括号标记 (1)v-cloak,防止闪烁,通常用于比较大的选择器上. 给元素添加属性v-cloak,然后style里面:[v-cloak]{display:none;} ...

  10. Java笔记2:Eclipse编写第一个Java程序

    1 下载并安装jdk 2 下载较新版本的eclipse,eclipse都是非安装版的,解压缩即可. 3 双击eclipse.exe,打开elipse软件 4 FileàNewàProject 5 选择 ...