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

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.返回响应报文到客户端浏览器

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

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

最新文章

  1. Spring异步功能
  2. JS魔法堂: Native Promise Only源码剖析
  3. 查询oracle数据库中的所有表空间信息
  4. laravel Ajax post方式的使用
  5. html5 video标签兼容性与自定义控件
  6. c++builder 代码输入助手
  7. 第二百五十天 how can I 坚持
  8. 页面资源预加载(Link prefetch)功能加速你的页面加载速度
  9. tolower (Function)
  10. gtest简短,简单易用
  11. Printk 标志优先级别
  12. Java Trie树
  13. 一个想法照进现实-《IT连》创业项目:三天的风投对接活动内幕分享
  14. Python入门学习(一)
  15. 终于将SAP系统完全配置通过了
  16. python 自动化之路
  17. spark wordcount 编程模型详解
  18. jmeter BeanShell实例-----两个变量之间的断言对比
  19. Hadoop| MapperReduce02 框架原理
  20. OpenCV自带dnn的Example研究(4)— openpose

热门文章

  1. SD 一轮集训 day1 lose
  2. [xsy1515]小学生数学题
  3. TZOJ 5396: 集五福过大年
  4. python的编码程序例题
  5. iOS开发&mdash;&mdash;MJExtension复杂数组用法
  6. 我们知道写入过程比ZooKeeper集合中的读取过程要贵,因为所有节点都需要在数据库中写入相同的数据。因此,对于平衡的环境拥有较少数量(例如3,5,7)的节点比拥有大量的节点要好。
  7. IE11快捷键 双击没反应的解决办法
  8. Spring的学习(IoC,AOP)等
  9. JS中map、forEach、filter、reduce等Array新增方法的区别
  10. NYOJ 1058 部分和问题 【DFS】