Построение полнофункционального веб-приложения может показаться сложной задачей, но с правильными инструментами и подходом это можно сделать за короткий период времени. В этой статье мы рассмотрим, как построить полнофункциональное веб-приложение с использованием Python, включая бэкенд-API, базу данных и чистый фронтенд.
Выбор технологий
Для построения нашего приложения мы будем использовать следующие технологии:
- FastAPI: современный, асинхронный фреймворк для веб-разработки на Python.
- SQLite + SQLAlchemy: база данных с нулевой конфигурацией, которая работает сразу после установки.
- Jinja2: шаблонизатор HTML для создания динамических веб-страниц.
- Railway: платформа для быстрого развертывания приложений.
Эти технологии не являются "игрушками", а используются в реальных проектах и компаниях, таких как Uber и Netflix. Это означает, что знания и навыки, полученные в результате этого проекта, можно применить в будущих проектах.
Подготовка проекта
Для начала нам нужно создать структуру проекта. Открываем терминал и выполняем следующие команды:
mkdir taskmaster && cd taskmaster
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install fastapi uvicorn sqlalchemy jinja2 python-multipart
Затем создаем следующую структуру файлов:
taskmaster/
├── main.py
├── database.py
├── models.py
├── templates/
│ └── index.html
└── requirements.txt
Настройка базы данных
В файле database.py мы настраиваем базу данных с использованием SQLAlchemy:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
DATABASE_URL = "sqlite:///./tasks.db"
engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
Определение данных
В файле models.py мы определяем нашу модель данных:
from sqlalchemy import Column, Integer, String, Boolean
from database import Base
class Task(Base):
__tablename__ = "tasks"
id = Column(Integer, primary_key=True)
title = Column(String)
completed = Column(Boolean, default=False)
Эти шаги позволяют нам создать базовую структуру нашего приложения и настроить базу данных. В следующем разделе мы рассмотрим, как создать бэкенд-API и интегрировать его с базой данных.
Создание бэкенд-API
В файле main.py мы создаем бэкенд-API с использованием FastAPI:
from fastapi import FastAPI
from database import get_db
from models import Task
app = FastAPI()
@app.get("/tasks/")
def read_tasks():
db = get_db()
tasks = db.query(Task).all()
return [{"id": task.id, "title": task.title, "completed": task.completed} for task in tasks]
Этот код создает простой API, который возвращает список всех задач.
Развертывание приложения
Для развертывания нашего приложения мы используем Railway. Это позволяет нам быстро развернуть наше приложение и сделать его доступным для всех.
В заключении, построение полнофункционального веб-приложения на Python за 2 часа является вполне реальной задачей. С помощью правильных инструментов и подхода мы можем создать приложение, которое включает бэкенд-API, базу данных и чистый фронтенд. Этот опыт и знания можно применить в будущих проектах и компаниях.