Что такое фреймворк? Создание своего веб-фреймворка на Python
Слово фреймворк всегда вызывает какое-то опасение, ибо не всегда понятно что это и как с ним работать. В статье мы ознакомимся с понятием и создадим свой веб фреймворк на базе языка Python.
Что такое фреймворк?
Простыми словами, фреймворк – это набор готовых инструментов, что позволяют создать проект быстрее и проще. Фреймворк предоставляет основные функции и архитектуру, чтобы упростить процесс разработки и избавить разработчиков от необходимости писать всё с нуля.
В каждом популярном языке программирования есть свои фреймворки. В Питоне таковых очень много и каждый предназначен под определенные цели. К примеру, фреймворк предназначен для веб-разработки. Он предоставляет множество инструментов для работы с базами данных, обработки URL, аутентификации и многого другого. Если потребуется написать игру, то можно использовать , если приложение под ПК – и так далее.

Процесс работы с фреймворком подобен использованию конструктора, где основные каркасы уже созданы, и разработчику нужно лишь дополнять их своим функционалом. То есть фреймворк ничто иное, как набор готового кода, который вы можете использовать для построения проектов разного жанра.
Курс изучения Python
Можете пройти наш бесплатный курс по изучению Python
Настройка сервера
А теперь давайте попробуем создать свой простой веб фреймворк на базе Python.
Мы будем создавать веб-фреймворк, но в очень простом его понимании. Для создания сайта мы не будем использовать сторонние библиотеки, а лишь будем работать со встроенными библиотеками.
Для начала импортируем классы из библиотеки http.server, а также метод urlparse из библиотеки urllib.parse.
Также пропишем функцию, что будет создавать сервер. В функции создаем кортеж с хостом и портом. Через класс HTTPServer указываем данные для сервера, а также подставляем базовый класс с описанием действий сервера. Дополнительно выводим строку с информацией про URL адрес сайта. За счет функции serve_forever указываем работу сервера на постоянной основе.
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse
def run_server(port=8000):
server_address = ('', port)
httpd = HTTPServer(server_address, BaseHTTPRequestHandler)
print(f'Starting: http://localhost:{port}')
httpd.serve_forever()
if __name__ == '__main__':
run_server()Теперь такой код можно запустить. После этого мы получим готовый запущенный сервер. Если перейти по URL адресу, то будет выдана ошибка, что логично, ведь мы пока не отслеживаем URL адреса.
Разные URL адреса
Для обработки нескольких URL нам стоит создать отдельный класс, что является наследником для класса BaseHTTPRequestHandler. В классе описываем метод do_GET. Он будет срабатывать при переходе на любой URL в нашем сайте.
Мы с вами получаем URL страницы и обрабатываем ее через функцию urlparse. После обработки описываем условие для проверки на какой странице мы находимся. К примеру, если главная страница, то будет просто слэш. При попадании на страницу отправляем пользователю ответ браузера 200, контент страницы text/html и плюс через функцию write указываем какой текст мы будем писать на странице.
По схожему принципу описываем и другие URL страницы, а также страницу 404, что будет срабатывать в случае попадания на URL, что не обрабатывается.
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse
class SimpleHandler(BaseHTTPRequestHandler):
def do_GET(self):
parsed_url = urlparse(self.path)
path = parsed_url.path
if path == '/':
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'Main page')
elif path == '/about':
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write(b'About page')
def run_server(port=8000):
server_address = ('', port)
httpd = HTTPServer(server_address, SimpleHandler)
print(f'Starting: http://localhost:{port}')
httpd.serve_forever()
if __name__ == '__main__':
run_server()Дизайн страниц
А теперь давайте добавим некий дизайн для нашего сайта. Для этого нам потребуется создать HTML файл, что будет хранить разметку сайта. К нему же добавляем CSS файл с описанием стилей.
После описания файлов с дизайном вы можете открыть их через оператор with as и считать данные. Считанные данные подставьте в функцию self.wfile.write().
Доработка проекта
Разработка последующей части проекта доступна в видео ниже. Там же вы найдете полное описание всех необходимых действий:
Больше информации
Если вы хотите узнать больше информации про язык Python и хотите изучить его для создания своих схожих приложений, то рекомендуем вам нашу по этой теме.
В ходе огромной программы обучения вы изучите язык Питон, научитесь на его основе работать с базами данных, создавать мобильные проекты, строить веб сайты при помощи Django, ознакомитесь с REST API и познакомитесь с разработкой программ с использованием ИИ и различных библиотек языка.
Итог
По итогу у нас получился небольшой веб сайт, с несколькими страницами, формой регистрации и даже своей базой данных. Такой проект можно дополнять, создавая новые страницы и формы.
Наш проект нельзя назвать каким-то фреймвокром, ведь его функционал сводиться буквально к нескольким действиям.
Курс изучения Python
Можете пройти наш бесплатный курс по изучению Python
С другой стороны, а есть ли смысл создавать проекты без фреймворков? И тут ответ однозначно нет. Фреймфорки уже содержат все необходимые действия, а потому логичнее и проще использовать их, нежели все писать с чистого нуля.
Больше интересных новостей
5 свежих языков программирования
Что нужно знать хорошему Frontend-разработчику
Чем веб-приложение отличается от сайта?
Лучшие игры, созданные по мотивам книг