1

我正在尝试向我的 HTML 测试站点添加评论表单,但我无法获得将评论写入文件的表单。

<form action="/Users/kyle/server/comments.html" method="POST">
    Your name: <br>
    <input type="text" name="realname"><br>
    <br>Your email: <br>
    <input type="text" name="email"><br>
    <br>Your comments: <br>
    <textarea name="comments" rows="15" cols="50"></textarea><br><br>
    <input type="submit" value="Submit">
</form>

我怎样才能获得表格以向文件写入评论?

这是我用于服务器的 python 代码

#!/usr/bin/python
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER = 8080

#This class will handles any incoming request from
#the browser
a = open("/Users/kyle/server/web-test.html")
site=a.read()
class myHandler(BaseHTTPRequestHandler):

    #Handler for the GET requests
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        # Send the html message
        self.wfile.write(site)
        return

try:
    #Create a web server and define the handler to manage the
    #incoming request
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    print 'Started httpserver on port ' , PORT_NUMBER

    #Wait forever for incoming htto requests
    server.serve_forever()

except KeyboardInterrupt:
    print '^C received, shutting down the web server'
    server.socket.close()
4

1 回答 1

1

使用此代码,您将需要扩展myHandler以处理 POST 请求,然后在接受 POST 请求的方法中,您需要自己解析表单数据。该站点提供了一个获取 POST 数据的简单示例:http: //pymotw.com/2/BaseHTTPServer/#http-post。从表单数据中获得注释后,您可以将其写入文件,就像在任何其他 Python 应用程序中通常那样。如果需要,这里有一些关于读写文件的 Python 文档:http: //docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files

也就是说,像这样直接处理原始请求的代码通常不是为生产使用而编写的。一般而言,Web 应用程序是使用一个框架开发的,该框架具有为您完成大量此类工作的部分。该框架通常在独立的 Web 服务器下运行。例如,Django是一个 Web 应用程序框架,您可以使用Apachemod_python运行您的 Django 应用程序。

其他框架方面,我个人比较喜欢flask。您可能会发现CherryPy很有趣,因为 CherryPy 提供了一个 Web 应用程序框架和一个运行它的 Web 服务器,当您刚刚开始学习 Web 应用程序时,这可能更好地减少服务器设置问题。(flask 确实附带了一个开发服务器,您可以仅将其用于测试,但该开发服务器几乎无法用于生产。)

于 2013-07-06T01:14:53.743 回答