Python交互式网络数据/表单/接口与远程服务器通信

1 投票
3 回答
801 浏览
提问于 2025-04-15 21:39

有没有什么简单又高效的方法,可以让用户通过网页和远程服务器进行交流,让他们可以提交命令和使用界面?比如说,提供一个文本框让用户输入命令,还有一个文本区域显示输出,或者一些不需要命令的简单界面?

我已经完成了一个独立的Python代码,可以用来和服务器沟通,现在是基于终端/控制台的。我现在主要担心的是如何把这个代码改造得适合网页使用,这包括建立连接(使用Python的套接字),以及在用户登录期间保持这个连接。

一些进一步的细节:

  • 目前使用Django框架来处理基本的后端和模板。

3 个回答

1

weberror.pdbcapture这个地方,有一些很复杂的代码,用来实现网页上的互动功能。这个功能是通过一种叫做WSGI的中间件来实现的,简单来说,它会监听是否有人想要在系统标准输入(sys.stdin)上输入内容。当有人请求输入时,它就会开始从网页表单获取输入,并把结果发送回同一个页面。虽然你可能不想直接使用它,但如果你真的想要在网页上实现类似控制台的功能,这个代码可以给你一些启发(听起来你可能就是想要这样的东西,但我不太确定)。

1

如果你在使用Django,并且想让前端(浏览器中的HTML)和服务器进行交流,那么使用AJAX会让这件事变得简单很多。

这里有个链接 :) 这会让你的生活更轻松

2

最有效的方法可能就是像fmsf说的那样设置REST。一般来说,每个命令都会对应一个网址,网址后面会加上一些其他的变量:

http://example.com/nuclear_warhead/activate/1
http://example.com/nuclear_warhead/activate/2
http://example.com/nuclear_warhead/activate/3
http://example.com/nuclear_warhead/position/1/AtlanticOcean
http://example.com/nuclear_warhead/position/2/NorthPole
http://example.com/nuclear_warhead/position/3/Moon
http://example.com/nuclear_warhead/launch/1
http://example.com/nuclear_warhead/launch/2
http://example.com/nuclear_warhead/launch/3

你可以把这些命令当作客户端的操作(比如用户点击一个链接或者提交一个表单),也可以用Ajax调用。对于Ajax调用来说,用户需要填写一个复杂的表单,这个表单会把数据整理成一个合适的网址,并把数据发送到服务器。服务器处理完命令后,会返回一个结果(通常是XML或JSON格式),浏览器会解析这些数据并在页面上显示出来。

在一个完整的RESTful应用中,你会使用不同的HTTP方法,比如POST、GET、PUT和DELETE来处理记录。

http://example.com/secret_document/1 [POST] — 创建文档 http://example.com/secret_document/1 [PUT] — 更新文档 http://example.com/secret_document/1 [GET] — 获取文档 http://example.com/secret_document/1 [DELETE] — 删除文档

不过,并不是所有的浏览器都支持所有的HTTP方法。

在实现方面,Django是一个选择,但对于你想要的功能来说可能有点重。你可以看看这篇文章,它详细描述了如何设置一个轻量级的应用来响应网页客户端的请求。你当然可以在此基础上扩展更多功能。

撰写回答