Разработка веб-проектов на Python с примерами

Раздел: Веб-разработка -> Веб-разработка

Основные инструменты веб-разработки на Python

Python предлагает несколько фреймворков для создания веб-приложений. Рассмотрим наиболее популярные из них с примерами кода и разбором типичных затруднений.

Как создать минимальное веб-приложение с обработкой маршрутов на Flask?

Flask - микрофреймворк, позволяющий быстро запустить сервер с поддержкой URL-маршрутизации. Для установки выполняется команда:

pip install flask

создание сайтов python django (создание веб-сайтов на django с использованием python)

Создаётся файл app.py:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return 'Привет, мир!'

if __name__ == '__main__':
    app.run(debug=True)

Python web django (web-фреймворк django)

Команда запуска: python app.py. После перехода по адресу http://127.0.0.1:5000 отобразится приветствие.

Проблема: Не запускается сервер из-за занятого порта. Решение: указать другой порт, например app.run(port=8000).

Ошибка: ImportError: No module named flask. Решение: установить Flask в виртуальное окружение.

Как настроить Django проект с админ-панелью и моделями?

Django - полнофункциональный фреймворк со встроенной админкой. Установка:

pip install django

Python web flask (web-фреймворк flask)

Создание проекта и приложения:

django-admin startproject mysite
cd mysite
python manage.py startapp blog

Python web server (web-сервер на python)

В файле blog/models.py описывается модель:

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

Python 3 веб приложение (веб-приложение на python 3)

После регистрации модели в admin.py:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

Python веб сервисы (веб-сервисы на python)

Выполнение миграций:

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

примеры python веб (примеры веб-разработки на python)

Сервер запускается командой python manage.py runserver. Админка доступна по /admin.

Проблема: Ошибка миграции из-за несовместимости с базой данных. Решение: указать правильный движок БД в settings.py (по умолчанию SQLite).

Ошибка: 403 Forbidden при входе в админку. Решение: проверить, что CSRF-токен передан корректно.

Как реализовать асинхронный REST API на FastAPI?

FastAPI - современный асинхронный фреймворк с автоматической генерацией документации. Установка:

pip install fastapi uvicorn

создание сайта на python (создание сайта на python)

Код приложения main.py:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float

@app.get('/')
async def root():
    return {'message': 'Hello World'}

@app.post('/items/')
async def create_item(item: Item):
    return {'item': item.dict()}

Django python создание приложения (создание веб-приложения на django)

Запуск: uvicorn main:app --reload. Документация открывается по /docs.

Проблема: Отсутствует async/await в обработчиках. Решение: при использовании синхронных библиотек нужно оборачивать их в run_in_executor.

Ошибка: CORS-запросы блокируются. Решение: добавить middleware из fastapi.middleware.cors.

Как создать простой WebSocket сервер на aiohttp?

aiohttp - асинхронный HTTP-клиент/сервер, поддерживающий WebSocket. Установка:

pip install aiohttp

библиотека django python (библиотека django для веб-разработки на python)

Сервер ws_server.py:

from aiohttp import web

async def websocket_handler(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)

    async for msg in ws:
        if msg.type == web.WSMsgType.TEXT:
            await ws.send_str('Эхо: ' + msg.data)
        elif msg.type == web.WSMsgType.CLOSE:
            break

    return ws

app = web.Application()
app.router.add_get('/ws', websocket_handler)
web.run_app(app, port=8080)

Подключиться можно через любой WebSocket-клиент, например wscat.

Проблема: Исключение при отправке сообщения после закрытия соединения. Решение: проверять состояние ws.closed.

Ошибка: Не устанавливается соединение из-за CORS при использовании браузера. Решение: настроить заголовки в aiohttp_middleware.

Расширенные примеры кода для веб-разработки на Python

Flask: приложение с Blueprints и обработкой JSON API

Структура проекта с разделением на модули:

Пример
# app.py
from flask import Flask
from users import users_bp
from api import api_bp

app = Flask(__name__)
app.register_blueprint(users_bp, url_prefix='/users')
app.register_blueprint(api_bp, url_prefix='/api')

if __name__ == '__main__':
    app.run(debug=True)

# users/__init__.py
from flask import Blueprint
users_bp = Blueprint('users', __name__)

@users_bp.route('/')
def list_users():
    return {'users': ['Alice', 'Bob']}

# api/__init__.py
from flask import Blueprint, request, jsonify
api_bp = Blueprint('api', __name__)

@api_bp.route('/data', methods=['POST'])
def receive_data():
    data = request.get_json()
    if not data:
        return jsonify({'error': 'No JSON'}), 400
    return jsonify({'received': data})

Результат: при запросе POST /api/data с телом {"key":"value"} возвращается {"received": {"key":"value"}}.

Также можно добавить глобальный обработчик ошибок:

Пример
@app.errorhandler(404)
def not_found(e):
    return jsonify({'error': 'Not found'}), 404

FastAPI: работа с WebSocket и Dependency Injection

Пример эхо-сервера через WebSocket с валидацией параметров:

Пример
from fastapi import FastAPI, WebSocket, Depends, Query
from typing import Optional

app = FastAPI()

def get_username(username: str = Query(..., description='Имя пользователя')):
    return username

@app.websocket('/ws/{room_id}')
async def websocket_endpoint(websocket: WebSocket, room_id: int, username: str = Depends(get_username)):
    await websocket.accept()
    await websocket.send_text(f'Добро пожаловать, {username} в комнату {room_id}')
    try:
        while True:
            data = await websocket.receive_text()
            await websocket.send_text(f'Эхо: {data}')
    except WebSocketDisconnect:
        print(f'Пользователь {username} отключился')

Результат: при подключении к ws://localhost:8000/ws/1?username=Иван сервер приветствует пользователя и повторяет отправленные сообщения.

Также можно использовать встроенную документацию (Swagger) для тестирования HTTP-эндпоинтов, что ускоряет разработку.

Примеры веб-разработки на Python - comments

En
примеры python веб (python)