Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

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

ПрограммированиеData science+3
Анонимный вопрос
  ·   · 12,9 K
Хороший человек :3  · 20 мая 2022
Смотря что за сайт вы хотите сделать.
Если вам нужен статичный сайт без работы с данными(регистрация пользователя, профиль, новости, блог, товары, статьи и т.п.) просто такой - информационный сайт(визитка) вам нужны:
* html(вёрстка)
* css(стилизация)
* js(динамика на страничке: анимации, всплывашки и т.п.)
Если вы на сайте хотите работать с данными(регистрация пользователя, профиль, новости, блог, товары, статьи и т.п.), то тут нужен backend который занимается: созданием/чтением/редактированием/удалением данных.  Фреймворки содержат кучу готового кода, позволяющего не создавать велосипед. Если вам необходимо написать backend без фреймворков (у меня такие позывы бывают) то вам необходимо описать в txt или другом документе логику работы приложения затем реализовать её. Логика может быть разной в зависимости от предпочтений и любимых паттернов проектирования. Но в целом довольно удобный подход даёт mvc. Абстрактно логика примерно такая:
  1. Создаём переменную `routing` которая хранит в себе: url запроса(как ключ) и ciontroller и action как значение пример:
routing = {
    "" : "main/welcome",
    "login" : "main/login",
    "profile" : "user/profile"
}
Создаём контроллеры 
Для каждого контекста на сайте делается свой контроллер. На примере 2 контекста : "главная" и "пользователь", значит создаётся 2 контроллера: 
//MainController Файл #1
class MainController 
    function actionWelcome()
        return App.render('welcome')
    function actionLogin()
        return App.render('welcome')
    function actionError404()
        return App.render('error')

//UserController Файл #2
class UserController
    function actionProfile() 
        return App.render('profile')
У каждого контроллера свой action
Размещаем эти файлы к примеру относительно корня сайта в директории: `/controllers/`
Создаём шаблоны страниц
Размещаем эти файлы к примеру относительно корня сайта в директории: `/views/{название контроллера}/назвавние action`
по примеру получается
#/views/main/welcome
#/views/main/login
#/views/main/error
#/views/user/profile
  1. Создаём приложение которое обрабатывает url, подключает нужный controller и запускает нужный action
class App
    public routing
    public controller = main // контроллер используемый по умолчанию
    public action = error404 // экшен вызываемый по умолчанию
    function render(template, params) 
    function run()
function run() логика образно следующая:
новая переменная url = текущий url страницы
в цикле перебираем все элементы переменной routing
если переменная url равна ключу итерации: тогда переназначаются переменные App.controller и App.action :
новая переменная params равна результату выполнения метода: разбить строку по символу "/", строка которую разбиваем это значение из текущей итерации у которой url равна ключу текущей итерации. после того как разбили строку
App.controller =  первый элемент в params
App.action =  второй элемент в params
новая переменная controllerApp.controller + слово Controller
новая переменная action = слово action + App.action(с заглавной буквы)
далее, зная что контроллеры находятся в папке `/controllers/` подключаем контроллер, расположенный в: `/controllers/` + controller.
Далее у подключенного контроллера вызываем функцию/метод action и выводим на экран результат работы функции/метода.
function render(template_name, params) принимает имя шаблона и параметры(список/массив) для вставки в шаблон.
зная App.controller  и место где хранятся шаблоны получаем путь к шаблону:
новая переменная template = `/views/` + App.controller + / + template_name
новая переменная content = контенту файла по пути template
в цикле перебираем все элементы переменной params
заменяя в content ключ на значение из текущей итерации по переменной params
возвращаем content
Теперь создаётся так называемая единая точка входа, куда попадают все запросы на сайт, в которой подключается class App и вызывается его метод run()
Готово.
P.S. конечно логику можно улучшать фичами до бесконечности, но я не ставил цель описать в ТЗ работу полнофункционального фреймворка или точное код движка, моя цель: описать принцип работы, который даст немного понимания, как сделать сайт на паттерне mvc без использования фреймворка.
я старался писать абстрактно, не привязываясь к  конкретному языку, эта "схема" должна подойти практически для любого языка
1 эксперт согласен
Веб-разработчик, геймер, специалист по этике  · 24 мая 2022
Открываю тайны мироздания: абсолютно любой веб-сайт технически - это программа, которая умеет принимать HTTP запросы и возвращать в ответ на них какие-то данные (в HTTP ответ завёрнутые). На этом всё. Я серьёзно. Поэтому на... Читать далее
7 экспертов согласны
Руководитель отдела Frontend разработки...  · 19 мая 2022  · denni.io
Правильный ответ - просто писать код. Ведь что такое фреймворк? Это совокупность библиотек. Библиотека - это просто код (утрируя). Хотите все сделать сами - пишите сами все, что вам необходимо. Просто проблема в том, что... Читать далее
Руководитель отдела разработки пользовательских интерфейсов компании АО ОКБПерейти на credistory.ru
3 эксперта согласныи2 эксперта не согласны
Теоретически возможно, но на практике нет. Потому, что тогда пропадет весь смысл использовать python. Если писать... Читать дальше
Представитель хостинг-провайдера Eternalhost...  · 20 мая 2022
Создать конечно можно, но вот стоит ли и зачем это нужно — это большой вопрос. Фреймворки имеют готовые к использованию функции из коробки, поэтому вам не нужно каждый раз кодировать их с нуля. Без использования фреймворка вам... Читать далее
Просто о настройках и администрировании сайта в нашем блоге.Перейти на eternalhost.net/blog
Разработка высоконагруженных систем. Опыт 15+   · 20 мая 2022  · progolang.zenclass.ru
Здравствуйте! Вопрос очень интересный. Сайт создается не на языке python, а с помощью html, css и js. Язык программирования python - служит как обертка, для создания структуры сайта. В конечном итоге у вас получиться директория... Читать далее
Я в восхищении! Сам бы ответил грубо: "в огороде бузина, а в Киеве дядька". Видать, я давно не общался с... Читать дальше