You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python socket获取表单id为message的输入框提交值

解决方案

你不需要额外加前端JS就可以实现需求,只需要在服务端解析请求中的GET参数即可,所有依赖均为Python内置库,具体修改如下:

修改后的 website.py 代码

import socket
from urllib.parse import parse_qs, urlparse

SERVER_HOST = '127.0.0.1'
SERVER_PORT = 8000
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((SERVER_HOST, SERVER_PORT))
server_socket.listen(1)
print('Listening on port %s ...' % SERVER_PORT)

while True:    
    client_connection, client_address = server_socket.accept()

    request = client_connection.recv(1024).decode()
    # 解析请求内容提取参数
    if request:
        request_line = request.splitlines()[0]
        method, path, _ = request_line.split()
        # 解析路径中的查询参数
        parsed_path = urlparse(path)
        query_params = parse_qs(parsed_path.query)
        # 提取并打印message内容
        if 'message' in query_params:
            user_input = query_params['message'][0]
            print(f"用户提交的message内容:{user_input}")
    
    with open('form.html', 'r', encoding='utf-8') as f:
        file = f.read()
    # 响应头指定编码避免中文乱码
    response = 'HTTP/1.0 200 OK\nContent-Type: text/html; charset=utf-8\n\n' + file
    client_connection.sendall(response.encode())
    client_connection.close()
server_socket.close()

关键逻辑说明

  • 用Python内置的urllib.parse模块处理URL和查询参数,不需要额外安装第三方库
  • 拆分请求头第一行拿到请求路径,解析路径后拼接的查询参数
  • 匹配到message参数就打印对应的用户输入内容

form.html 可选修改(无需无刷新提交可忽略)

如果你希望用户提交后页面不刷新,才需要在script标签中添加以下代码,原有表单结构不需要改动:

const form = document.querySelector('form')
form.addEventListener('submit', e => {
  // 阻止默认跳转提交行为
  e.preventDefault()
  const msg = document.getElementById('message').value
  // 编码后提交避免特殊字符异常
  fetch(`/?message=${encodeURIComponent(msg)}`)
  // 提交后清空输入框
  form.reset()
})

内容的提问来源于stack exchange,提问作者ItsMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:45:03