gpt4 book ai didi

python - 连接python服务器和html

转载 作者:行者123 更新时间:2023-12-01 04:54:00 26 4
gpt4 key购买 nike

我使用 python 创建了一个服务器:

    import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

HandlerClass = SimpleHTTPRequestHandler
ServerClass = BaseHTTPServer.HTTPServer

Protocol = "HTTP/1.0"
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8008
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()

然后创建一个简单的 HTML 表单:

    <form action="" method="GET">
User Name :
<input type="text"id="username" placeholder="Enter User Name">
Password :
<input type="password" id="password" placeholder="Enter Password">
<button type="submit" id="submit">Sign in</button>
</form>

使用这段代码,我想将数据从 HTML 表单传输到 Python,然后打印。我尝试了很多,但没有一个线程帮助我,否则我无法理解这一点,所以请给我一些建议,如何使用在控制台中打印 usernamepassword 框值以上服务器代码。

最佳答案

一方面,您需要将名称属性添加到 <input>表单上的字段。如果没有这些,则 GET 查询字符串中不会发送任何数据。

<form action="" method="GET">
User Name :
<input type="text" name="username" id="username" placeholder="Enter User Name">
Password :
<input type="password" name="password" id="password" placeholder="Enter Password">
<button type="submit" id="submit">Sign in</button>
</form>

然后您应该看到用户名和密码表单字段转储到您的控制台:

Serving HTTP on 127.0.0.1 port 8008 ...127.0.0.1 - - [08/Jan/2015 23:56:38] "GET /x.html HTTP/1.1" 200 -127.0.0.1 - - [08/Jan/2015 23:56:43] "GET /x.html?username=someone&password=secretstuff HTTP/1.1" 200 -

Edit (how to handle request)

To access the individual fields present in the query string you can override the SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET() method and parse the query like this:

from SimpleHTTPServer import SimpleHTTPRequestHandler
import BaseHTTPServer
from urlparse import urlparse, parse_qs

class CustomHTTPRequestHandler(SimpleHTTPRequestHandler):
def do_GET(self):
query_string = urlparse(self.path).query
fields = parse_qs(query_string) if query_string else {}
if fields:
print "username = {}, password = {}".format(fields.get('username')[0], fields.get('password')[0])
return SimpleHTTPRequestHandler.do_GET(self)

if __name__ == '__main__':
BaseHTTPServer.HTTPServer(('', 8008), CustomHTTPRequestHandler).serve_forever()

请注意,出于安全原因,您应该在 HTML 表单和 https 中使用 POST。另外,看看CGIHTTPServercgi 结合使用模块,甚至是第三方 Web 框架,例如 bottle , flask ,甚至django根据您的要求。这些框架使实现您想要的那种服务器变得更加容易。

关于python - 连接python服务器和html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27839157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com