web网页向cgi发送post请求并返回数据_Python简易Web服务器(1)

f1f08727f0109454a0452a20236ad25e.png
本文主要是用Python3的http.server实现一个简易的Web服务器,具体的参考可在此查看。

该简易Web服务器可以处理GET以及POST请求,具体的代码实现如下所示。

from http.server import BaseHTTPRequestHandler, HTTPServer ### 导入必要的模块和依赖
from os import path, system, environ
from urllib.parse import urlparse
import cgi
import time

class server_handler(BaseHTTPRequestHandler):
    def do_GET(self):
        mimetype = 'text/html'
        page_file = open("/path/to/test.html", 'rb')
        self.send_response(200)
        self.send_header('Content-type', mimetype)
        self.end_headers()
        self.wfile.write(page_file.read()) 

     def do_POST(self):
        form = cgi.FieldStorage(
                    fp=self.rfile,
                    headers=self.headers,
                    environ={
                            'REQUEST_METHOD':'POST',
                            'CONTENT_TYPE':self.headers['Content-Type'],
                    }
        )
        print(form['login_user'].value)
        print(form['login_passwd'.value])
        self.send_response(200)
        self.send_header('Content-type', mimetype)
        self.end_headers()
        self.wfile.write("Success")

def run():
    port = 8080
    print("Starting server, port ", port)

    ### Server settings
    server_address = ('', port)
    httpd = HTTPServer(server_address, server_handler)
    print("Server is running ...")
    httpd.serve_forever()

if __name__ == '__main__':
    run()

首先,通过继承BaseHTTPRequestHandler,来获取Python Http server内的所有有关用户请求处理的代码,方便后面我们复写自己的用户请求处理。

接下来的do_GETdo_POST两个函数分别用于处理用户的GET请求和POST请求。在do_POST内,通过cgi包的FieldStorage类,我们可以访问POST请求内的form表单内容,用于我们后面的进一步处理。而代码块

self.send_response(200)
        self.send_header('Content-type', mimetype)
        self.end_headers()
        self.wfile.write("Success")

用于通知前端页面,请求的反馈状态,并返回对应的网页内容。

最后,通过run函数,来启动此简易Web服务器,并持续监听8080端口的请求信息。

以上就是利用Python http模块实现的简易Web服务器,非常简单,分别实现两个成员函数来监听对应的GET请求和POST请求,然后返回给前段页面对应内容即可,仅此而已。服务器的启动需要借由终端实现,下面的启动命令以Linux为例。

$ cd /path/to/your_server_file_position
$ python3 SimpleWebServer.py

其中SimpleWebServer.py为简易服务器的文件的名。

哦,对了,我们还少了一个前段页面的内容,以下是前端页面的代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <div id="login" >
        <form method="post">
            <div>
                <label for="loginUser" class="sr-only">Username</label>
                <input id="loginUser" type="text" autofocus placeholder="Username" name="login_user"></input>
                <label for="loginPasswd" class="sr-only">Password</label>
                <input id="loginPasswd" type="password" placeholder="Password" name="login_passwd"></input>
            </div>
            <button type="submit">Login</button>
        </form>
    </div>
</body>
</html>

上述HTML代码保存为test.html文件,该文件即通过do_GET函数返回给前端页面。通过浏览器访问localhost:8080,即可看到该文件的内容。

Enjoy it。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值