Задать вопрос
@lexchz

Можно ли на Python написать простой сайт без фреймворков?

Всем привет! Так сложилось, что всегда работал с динамическими сайтами исключительно на PHP, но вот решил что-нибудь завести на Python. Про Django, Flask и Fast Api знаю, но реально ли сделать на чистом Питоне, без фреймворков, сайт типа визитки? То есть, по аналогии с PHP создаём условный index.py, в нём роутинг на несколько url и включаемые файлы. Это реально? Существует ли аналог $_SERVER['REQUEST_URI'] и include/require() в Python?
  • Вопрос задан
  • 12075 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 3
Aetae
@Aetae
Тлен
Python в отличие от PHP - язык общего назначения. В нём ничего не заточено "из коробки и без библиотек" для работы web-сервером.
Ты либо пишешь руками всё с нуля вплоть до реализации протокола http(а то и tcp, почему нет), либо таки подключаешь соответствующие библиотеки.
А если ты подключишь что-то, что предназначено для этой задачи, оно скорее всего уже будет уметь заметно больше чем в примитивную работу с html как текстом.

По сути твой запрос "дайте мне такую python библиотеку для работы с web, чтоб умела не только отдавать статику, но и умела в работу шаблонами, однако исключительно в примитивную, как с текстом, на уровне древнего чистого php". Запрос специфический и бессмысленный, но мб и существует что-то такое.
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Vindicar
@Vindicar
RTFM!
То есть, по аналогии с PHP создаём условный index.py, в нём роутинг на несколько url и включаемые файлы.

Роутинг реализуется фреймворками. Ты или пишешь HTTP-сервер с нуля (ну или сам реализуешь CGI/WSGI), прежде чем добраться до собственно логики сайта, или поручаешь это фреймворку.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 8
@Everything_is_bad
Да без проблем, просто тебе кучу всегда надо будет самим написать, т.е. тупо потратить кучу времени на то что уже дано сделано. Ну и для сайта визитки не нужен ЯП, достаточно просто веб сервера
Ответ написан
без фреймворков слишком много придётся написать с "нуля"
Ответ написан
Комментировать
@Derfirm
Noname Developer.
Задача на самом деле вполне реализуема, в пайтоне уже много всего в наличии для решения (таки фреймворки не то чтобы прямо с нуля написаны). Стоит ли игра свеч? Скорее всего нет, я давно развлекался подобной идеей, мол минимум зависимостей и родился подобный монструосити, рекомендации давать не буду, но выглядит примерно так
https://github.com/Derfirm/coub_api/blob/master/co...
Ответ написан
Комментировать
KulakovAngel
@KulakovAngel
Full Stack Developer (Node.JS)
Да, как сказали выше, pyton - язык общего назначения. Не сочтите за флуд, но мне кажется, учитывая ваш запрос, связанный с вебом, вам бы понравился больше Node.js. На этой платформе очень легко, используя javascript, написать простой (а если нужно, то и сложный) сайт без использования библиотек (даже без именитого Express). В сам Node.js уже встроена работа с веб-сервером. Пишите стандартный html и отправляете его клиенту. Можно и динамически отправлять, и также без использования библиотек, это также возможно, но уже не так тривиально. Вот пример примитивного сервера без использования всяких библиотек:
const http = require("http");
const server =  http.createServer(function(request, response){
    response.end("Hello, Node.js!");
});
server.listen(3000);

По этой ссылке доступен простой учебник по платформе Node.js.
Ответ написан
Комментировать
@GBR-613
То, что Django, Flask и Fast Api в основном делают - это как раз файл на Питоне с роутингом на несколько url и включаемые файлы. Пишется, скажем, аннотация с указанием URL и команды (GET, POST...), а сразу за ней - функция, которая срабатывает при вызове этой команды на этот URL.
Ну и зачем Вам этим не пользоваться? "Из принципа"? Может, тогда уж не пользоваться РНР, а делать все на ассемблере? :-)
Ответ написан
@PjaniyAdmin
Вот и новое поколение пришло которое даже про cgi не слышало. Через cgi можно на чем угодно, хоть на С++ написать - былобы желание и понимание заголовков. Один раз видел даже на bash реализацию, не знаю что курил её автор, ну а почему бы и нет.
Ответ написан
Комментировать
Дока здесь

import http.server
import socketserver

PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()
Ответ написан
Комментировать
@nihi1ist
Я за pelican. Это не чистый питон конечно, но удобен и достаточно прост для статических сайтов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 00:16
43000 руб./за проект
30 янв. 2025, в 21:33
5000 руб./за проект
30 янв. 2025, в 21:14
4000 руб./за проект