Страница Python SimpleHTTPServer 404

Недавно я использовал Python SimpleHTTPServer для размещения файлов в своей сети. Мне нужна пользовательская страница 404, поэтому я изучил ее и получил несколько ответов, но я все еще хочу использовать этот скрипт, который у меня есть. Итак, что мне нужно добавить, чтобы получить страницу 404 в этом скрипте?

import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler


HandlerClass = SimpleHTTPRequestHandler
ServerClass  = BaseHTTPServer.HTTPServer
Protocol     = "HTTP/1.0"

if sys.argv[1:]:
    port = int(sys.argv[1])
else:
    port = 80
server_address = ('192.168.1.100', port)

HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)

sa = httpd.socket.getsockname()
print "Being served on", sa[0], "port", sa[1], "..."
httpd.serve_forever()

person SamS    schedule 18.03.2014    source источник
comment
Попробуйте этот ответ - для вашего вопроса вам нужно будет сделать что-то вроде HandlerClass.error_message_format = ....   -  person    schedule 18.03.2014


Ответы (1)


Вы реализуете свой собственный класс обработчика запросов и переопределяете метод send_error, чтобы изменить error_message_format только тогда, когда код равен 404:

import os
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

class MyHandler(SimpleHTTPRequestHandler):
    def send_error(self, code, message=None):
        if code == 404:
            self.error_message_format = "Does not compute!"
        SimpleHTTPRequestHandler.send_error(self, code, message)


if __name__ == '__main__':
    httpd = HTTPServer(('', 8000), MyHandler)
    print("Serving app on port 8000 ...")
    httpd.serve_forever()

Значение по умолчанию error_message_format:

# Default error message template
DEFAULT_ERROR_MESSAGE = """\
<head>
<title>Error response</title>
</head>
<body>
<h1>Error response</h1>
<p>Error code %(code)d.
<p>Message: %(message)s.
<p>Error code explanation: %(code)s = %(explain)s.
</body>
"""
person Nicu Surdu    schedule 20.11.2019