Я новичок в веб-серверах и пытаюсь создать простой, используя модуль http.server
из python. Я работаю на локальном сервере, который отображает форму и, отправляя эту форму, должен перенаправить ее для отображения сообщения, поэтому я использовал send_response(303)
, но вместо перенаправления на домашнюю страницу он отправляет ответ 200.
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import parse_qs
memory = []
form = '''<!DOCTYPE html>
Message Board
{}
'' 'Класс MessageHandler (BaseHTTPRequestHandler): def do_POST (self): # Как долго было сообщение? length = int (self.headers.get ('Content-length', 0)) # Считать правильный объем данных из запроса. data = self.rfile.read (length) .decode () # Извлечь поле «message» из данных запроса. message = parse_qs (data) ["message"] [0] # Избегать тегов HTML в сообщении, чтобы пользователи не могли разбить мир + собаку. message = message.replace ("<", "<") # Сохраните его в памяти. memory.append (message) # 1. Отправьте перенаправление 303 обратно на корневую страницу. self.send_response (303) self.send_header ('Content-type', 'text / html; charset = utf-8') self.send_header ('Location', '/') # Это перейдет к исходной странице self. end_headers () def do_GET (self): # Сначала отправьте ответ 200 OK. self.send_response (200) # Затем отправьте заголовки. self.send_header ('Content-type', 'text / html; charset = utf-8') self.end_headers () # 2. Соедините ответ из формы и сохраненных сообщений. response = "" для сообщения в памяти: response + = f "{message} \ n" # 3. Отправьте ответ. self.wfile.write (form.format (response) .encode ()) if __name__ == '__main__': server_address = ('', 8000) httpd = HTTPServer (адрес_сервера, MessageHandler) httpd.serve_forever () </code>