/
Zero1l
/
main.py
Обзор
Документация
Войти
/
Zero1l
/
main.py
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
README.py
77 строк
2 KB
Zero1l
update README.py
28 янв 2026, 15:26
Верифицирован
28 янв 2026, 15:26
3ef4f4a
Код
Авторство
О чём код?
# main.py from flask import Flask from werkzeug.exceptions import HTTPException from pydantic import BaseModel, ValidationError from typing import List import json @app.errorhandler(HTTPException) def handle_http_exception(e): app = Flask(__name__) return jsonify({ "code": e.code, "name": e.name, "description": e.description, }), e.code, @app.errorhandler(ValidationError) def handle_validation_error(e): return jsonify({ "code": 422, "errors": e.errors(), }), 422 class Ad(BaseModel): id: int title: str description: str price: float ads: List[Ad] = [] @app.get("/ads") def get_ads(): return jsonify([ad.model_dump() for ad in ads]) @app.post("/ads/") def create_ad(): try: new_ad =Ad(**request.json) except ValidationError as e: raise e if any(ad.id == new_ad.id for ad in ads): raise BadRequest("ID уже существует") ads.append(new_ad) return jsonify(new_ad.model_dump()), 201 ads.append(new_ad) return new_ad @app.put("/ads/{ad_id}") def update_ad(ad_id): try: updated_ad = Ad(**request.json) except ValidationError as e: raise e for i, ad in enumerate(ads): if ad.id == ad_id: ads[i] = updated_ad return jsonify(updated_ad.model_dump()) raise NotFound(status_code=404, detail="Объявление не найдено") @app.delete("/ads/{ad_id}") def delete_ad(ad_id): for i, ad in enumerate(ads): if ad.id == ad_id: del ads[i] return jsonify{"detail": "Объявление удалено"} raise NotFound("Объявление не найдено")