【问题标题】:How to print new line char using http.server python3?如何使用 http.server python3 打印换行符?
【发布时间】:2018-12-02 18:16:33
【问题描述】:

我正在尝试制作我自己的小型信使服务器,它可以通过 PRG 模式工作。我工作正常,但每次收到新消息时,我在 do_GET() 中打印换行符时遇到问题。

from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import parse_qs


class MessageHandler(BaseHTTPRequestHandler):

    html_form = """
    <!DOCTYPE html>
    <title>Message Board</title>
    <form method="POST" action="http://localhost:8000/">
        <textarea name="message"></textarea>
        <br>
        <button type="submit">Post it!</button>
    </form>
    """

    messages = []

    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html; charset=utf-8')
        self.end_headers()
        self.wfile.write(self.html_form.encode())
        for m in self.messages:
            self.wfile.write((m+"\n").encode())


    def do_POST(self):
        # 1. How long was the message? (Use the Content-Length header.)
        length = int(self.headers.get('content-length', 0))
        # 2. Read the correct amount of data from the request.
        data = self.rfile.read(length).decode()
        # 3. Extract the "message" field from the request data.
        message = parse_qs(data)['message'][0]
        self.messages.append(message.replace('<', '&lt;'))
        # Send the "message" field back as the response.
        self.send_response(303)
        self.send_header('Location', '/')
        self.send_header('Content-type', 'text/plain; charset=utf-8')
        self.end_headers()

if __name__ == '__main__':
    server_address = ('', 8000)
    httpd = HTTPServer(server_address, MessageHandler)
    httpd.serve_forever()

【问题讨论】:

    标签: python python-3.x http server


    【解决方案1】:

    我发现了如何解决这个问题。显然,这个“服务器”打印浏览器中的所有内容,所以换行符必须是 HTML 格式的'&lt;br&gt;''&lt;br /&gt;'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多