BaseHTTPServer,从POST single valu中提取变量

2024-09-27 07:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道如何使用位于外部服务器上的html表单发布变量表单内容。在

我有这个代码:

我的服务器.py

import BaseHTTPServer

HOST_NAME = ''
PORT_NUMBER=8000

postVars = ''

class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):

    def do_POST(s):
        global postVars
        s.send_response(200)
        s.end_headers()
        varLen = int(s.headers['Content-Length'])
        postVars = s.rfile.read(varLen)
        print postVars

server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)

try:
    httpd.handle_request()
except KeyboardInterrupt:
    pass

print postVars
httpd.server_close()
postVars is valued during the Handler, but not after MyHandler

它目前在控制台上打印这个

^{pr2}$

我需要提取每个变量并使用它们调用后续bash脚本。在

我想完成的任务示例: 在

import os
value1="user"
value2="domain"
value3="pass"
os.system("./usersprivetes.sh %s %s %s" % (value1,value2,value3))

感谢您的评论和帮助。在


Tags: nameimport服务器host表单numberserverport
1条回答
网友
1楼 · 发布于 2024-09-27 07:23:24

hello通过添加一些代码来解决这个问题,一个只为我服务一次的代码,在变量被传递回不再函数之后,我想这就是我的顺序

#cat server.py
import BaseHTTPServer
import urlparse
import os

HOST_NAME = ''
PORT_NUMBER=8000

postVars = ''

class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):

    def do_POST(s):
        global postVars
        s.send_response(200)
        s.end_headers()
        varLen = int(s.headers['Content-Length'])
        postVars = s.rfile.read(varLen)
        #print postVars

server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)

try:
    httpd.handle_request()
except KeyboardInterrupt:
    pass

#print postVars

qs = dict( (k, v if len(v)>1 else v[0] )
           for k, v in urlparse.parse_qs(postVars).iteritems() )
#print qs

pase = qs['pass']
dominio = qs['domain']
usuario = qs['user']

os.system("./createuser.sh %s %s %s" % (pass,user,domain))
httpd.serve_forever()

谢谢你 这就创造了奇迹

^{pr2}$

相关问题 更多 >

    热门问题