Как создать сайт на python без использования фреймворков?

Как создать сайт на python без использования фреймворков?

Просто в общем скажите, что нужно сделать. Детали я сам погуглю

P.S. Я знаю, что это создание велосипедов, но это мне нужно для изучения работы веб приложений в частности и обучения программированию в общем


Ответы (3 шт):

Автор решения: Victor VosMottor

Если прям без фреймворка, то cgi. Но... зачем? Есть же фреймворки.

  • Flask

    Flask — фреймворк для создания веб-приложений на языке программирования Python, использующий набор инструментов Werkzeug, а также шаблонизатор Jinja2. Относится к категории так называемых микрофреймворков[en] — минималистичных каркасов веб-приложений, сознательно предоставляющих лишь самые базовые возможности.

  • Django

    Django (Джанго, ['dʒæŋɡoʊ][6]) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC[7]. Проект поддерживается организацией Django Software Foundation.

django docs | flask docs

→ Ссылка
Автор решения: Stanislav Volodarskiy

В стандартной библиотеке Python есть модуль http.server. Это HTTP-сервер, на основе которого можно создавать сайты любой сложности. Конечно, чем больше сложность, тем больше вам придётся написать функциональности, которая уже есть во фреймворках. Но если вам нужен сервер для отладки или вы хотите понять как что устроено, то начните с него.

→ Ссылка
Автор решения: eri

Отличный вопрос - зря минусим.

В каталоге проекта

создай папку ./cgi-bin напиши файлик ./cgi-bin/index.py с содержимым

#!/bin/python3

print("Content-Type: text/html")    # Хидеры ответа
print()                             # Пустая строка сразу после хидеров
# А потом текст ответа
print("<TITLE>CGI script output</TITLE>")
print("<H1>This is my first CGI script</H1>")
print("Hello, world!")

Сделай скрипт исполнимым

chmod +x ./cgi-bin/index.py

И запукай http сервер

python3 -m http.server --cgi 8000

Переходи по ссылке http://localhost:8000/cgi-bin/index.py и вот Hello-Word на чистом питоне готов.

Вариант чуть посложнее с одним модулем

import http.server

class Handler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200, 'OK')
        self.send_header('Content-Type', 'text/html')
        self.end_headers()
        self.wfile.write('''
<TITLE>Handler script output</TITLE>
<H1>This is my first Handler script</H1>
Hello, world!
'''.encode())

httpd = http.server.HTTPServer(('', 8000), Handler)
httpd.serve_forever()

Тут нет обработчика URI и один ответ будет на всех страницах.

→ Ссылка