【问题标题】:Python :- passing HTML form input to python code and execute it [closed]Python:-将HTML表单输入传递给python代码并执行它[关闭]
【发布时间】:2013-08-26 11:09:43
【问题描述】:

您好,我想从 html 表单获取输入并将其传递给我的 python 脚本并使其执行,然后我想在不使用任何框架的情况下在浏览器中打印我的结果。下面是我的python代码:

import re

hap=['amused','beaming','blissful','blithe','cheerful','cheery','delighted']

sad=['upset','out','sorry','not in mood','down']

sad_count=0

happy_count=0

str1=raw_input("Enter Message...\n")

happy_count=len(filter(lambda x:x in str1,hap)) 

sad_count=len(filter(lambda x:x in str1,sad))

if(happy_count>sad_count):

        print("Hey buddy...your mood is HAPPY :-)")

elif(sad_count>happy_count):

            print("Ouch! Your Mood is Sad :-(")

elif(happy_count==sad_count):

        if(happy_count>0 and sad_count>0):

            print("oops! You are in CONFUSED mood :o")

        else:
            print("Sorry,No mood found :>")

【问题讨论】:

  • 您需要某种网络服务器,运行 html 模板,并创建一个处理代码的回调函数。看看一些基本的 cgi/wsgi examples

标签: python html forms cgi


【解决方案1】:

如果你想在本地机器上测试它,你可以用 python 创建一个简单的 webserver。你可以找到一个很好的教程here。您可以编写 python 脚本来处理数据。 或者你应该安装一个真正的网络服务器,比如 Apache 或 NGinx,并使用 cgi 或 wsgi 扩展。第二种方法的优点是,在这种情况下,服务器可以处理 html、css、图像等文件,因此您可以专注于您的 python 代码,而无需编写整个现有应用程序。

【讨论】:

    【解决方案2】:

    似乎你使用的是 python3,但在 python 2.7 中使用 BaseHTTPServer(即 python3 中的 HTTP.server)你可以做类似的事情

    from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
    import cgi
    
    class Handler(BaseHTTPRequestHandler):
        def do_GET(self):
            self.send_response(200)
            self.end_headers()
            self.wfile.write("""
                <html><head></head>
                <body>
                <form method="POST">
                your mood:
                <textarea name="mood">
                </textarea>
                <input type="submit" name="submit" value="submit">
                </form>
                </body>
                </html>
                """)
            return
    
        def do_POST(self):
            form = cgi.FieldStorage(
                fp=self.rfile, 
                headers=self.headers,
                environ={'REQUEST_METHOD':'POST',
                         'CONTENT_TYPE':self.headers['Content-Type'],
                         })
            themood = form["mood"]
            hap=['amused','beaming','blissful','blithe','cheerful','cheery','delighted']
            sad=['upset','out','sorry','not in mood','down']
            sad_count=0
            happy_count=0
            happy_count=len(filter(lambda x:x in themood.value,hap)) 
            sad_count=len(filter(lambda x:x in themood.value,sad))
            if(happy_count>sad_count):
                self.wfile.write("Hey buddy...your mood is HAPPY :-)")
            elif(sad_count>happy_count):
                self.wfile.write("Ouch! Your Mood is Sad :-(")
            elif(happy_count==sad_count):
                if(happy_count>0 and sad_count>0):
                    self.wfile.write("oops! You are in CONFUSED mood :o")
                else:
                    self.wfile.write("Sorry,No mood found :>")
            return
    server = HTTPServer(('', 8181), Handler)
    server.serve_forever()
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 2017-09-26
      • 2018-12-01
      • 1970-01-01
      • 2015-12-18
      相关资源
      最近更新 更多