Django中API分析
2024-09-21 20:29:30
下面,我将仔细分析一次请求的旅程:
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.返回响应报文到客户端浏览器
下面使我们看到的浏览器结果
好了!以上就是一次请求开始,到获得结果的详细过程!
最新文章
- Spring异步功能
- JS魔法堂: Native Promise Only源码剖析
- 查询oracle数据库中的所有表空间信息
- laravel Ajax post方式的使用
- html5 video标签兼容性与自定义控件
- c++builder 代码输入助手
- 第二百五十天 how can I 坚持
- 页面资源预加载(Link prefetch)功能加速你的页面加载速度
- tolower (Function)
- gtest简短,简单易用
- Printk 标志优先级别
- Java Trie树
- 一个想法照进现实-《IT连》创业项目:三天的风投对接活动内幕分享
- Python入门学习(一)
- 终于将SAP系统完全配置通过了
- python 自动化之路
- spark wordcount 编程模型详解
- jmeter BeanShell实例-----两个变量之间的断言对比
- Hadoop| MapperReduce02 框架原理
- OpenCV自带dnn的Example研究(4)— openpose
热门文章
- SD 一轮集训 day1 lose
- [xsy1515]小学生数学题
- TZOJ 5396: 集五福过大年
- python的编码程序例题
- iOS开发&mdash;&mdash;MJExtension复杂数组用法
- 我们知道写入过程比ZooKeeper集合中的读取过程要贵,因为所有节点都需要在数据库中写入相同的数据。因此,对于平衡的环境拥有较少数量(例如3,5,7)的节点比拥有大量的节点要好。
- IE11快捷键 双击没反应的解决办法
- Spring的学习(IoC,AOP)等
- JS中map、forEach、filter、reduce等Array新增方法的区别
- NYOJ 1058 部分和问题 【DFS】