Возможно ли использование html-файла localhost с http-модулем python, например, django
Так что я пытался сделать localhost с http.server я использовал некоторые помощи из документации, но я получил ошибку я пытался исправить все еще не в состоянии исправить его вот код:
from http.server import BaseHTTPRequestHandler, HTTPServer
loop = True
def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
    server_address = ('result.html', 5050)
    httpd = server_class(server_address, handler_class)
    httpd.serve_forever()
    if loop == True:
        httpd.server_close()
while loop:
    run()
    ex = input("To close the server write 'exit' /n <<< ")
    if ex.find(f'exit'):
        loop = False
Ошибка:
Traceback (most recent call last):
  File "E:\Python\localhost\main.py", line 36, in <module>
    run()
  File "E:\Python\localhost\main.py", line 5, in run
    httpd = server_class(server_address, handler_class)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\socketserver.py", line 457, in __init__
    self.server_bind()
  File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\http\server.py", line 136, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "C:\Users\User\AppData\Local\Programs\Python\Python312\Lib\socketserver.py", line 473, in server_bind
    self.socket.bind(self.server_address)
socket.gaierror: [Errno 11001] getaddrinfo failed
Process finished with exit code 1
                
В вашем коде много ошибок. Это также показывает, что вы не знаете, как работают (веб-) серверы.
 Но лучше я покажу, как использовать http самым простым способом.
Если вы хотите обслуживать файлы в текущей папке, то самый простой способ - запустить в системной консоли (терминал/bash/powershell/etc)
python3 -m http.server 5050
и запустит встроенную функцию, которая запустит простой веб-сервер.
Это будет показано в консоли
Serving HTTP on 0.0.0.0 port 5050 (http://0.0.0.0:5050/) ...
 и вы можете скопировать адрес http://0.0.0.0:5050/ в веб-браузер, чтобы подключиться к этому серверу.
В некоторых консолях вы можете даже нажать на текст с адресом, и система откроет его в веб-браузере
.
(на некоторых терминалах может потребоваться нажать клавишу Ctrl при нажатии)
Если в текущей папке есть файл index.html, то он покажет вам этот файл.
 Если у вас нет index.html, то он покажет вам список всех файлов и подпапок в текущих папках, и вы можете щелкнуть result.html, чтобы отобразить его. Если щелкнуть папку, то должны отобразиться файлы в этой папке, но если в этой папке есть файл index.html, то отобразится index.html
 Поэтому иногда использование имени index.html может упростить задачу.
И это может скрыть файлы, которые у вас есть в папке.
Если вы хотите обслуживать файлы из другой папки, то используйте
python3 -m http.server 5050 -d /path/to/other/directory
Если вы все еще хотите писать код, то у вас есть ошибки:
server_addressдолжен использоватьIP address(как127.0.0.1) или доменное имя (какlocalhost) без пути с именем файла и/или папки, потому что эта информация обрабатывается в обработчике.BaseHTTPRequestHandlerне может быть использован напрямую, потому что у него нет функцииdo_GET()(и в конечном итогеdo_POST()). Вы должны использовать этот класс для создания собственного обработчика и добавить функциюdo_GET()class MyHandler(BaseHTTPRequestHandler): def do_GET(self): ...Он будет запускать эту функцию для каждого пути в URL, например
/result.html, и вы получите его вself.path- и вам нужно будет решить, что делать с этим путемserve_forever()выполняется вечно и блокирует следующие строки - поэтому использованиеinput()иwhile-петли бесполезно. Вы должны использовать ключиCtrl+Cдля остановки сервера.
Полный рабочий пример:
from http.server import HTTPServer, BaseHTTPRequestHandler
import os
class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        print('path:', self.path)
        
        if os.path.exists('result.html'):
            with open('result.html', 'rb') as f:  # bytes, not string
                data = f.read()
                
            self.send_response(200)
            self.send_header("Content-type", "text/html")
            self.end_headers()
            self.wfile.write(data,)
        else:
            data = b"Not found: result.html"   # bytes, not string
            
            self.send_response(404)
            self.send_header("Content-type", "text/plain")
            self.end_headers()
            self.wfile.write(data,)
            
        return
        
#server_address = ('localhost', 5050)  # access only from current computer
server_address = ('127.0.0.1', 5050)  # access only from current computer
#server_address = ('0.0.0.0', 5050)  # access from all computers in local network (if firewall doesn't stop it)
httpd = HTTPServer(server_address, MyHandler)
print(f"Running http://{server_address[0]}:{server_address[1]}")
print("Press Ctrl+C to stop it")
try:
    httpd.serve_forever()
except KeyboardInterrupt:
    print("\rStopping")    # `\r` to remove `^C` from screen`