linkedin2/main.py

47 lines
1.5 KiB
Python
Raw Permalink Normal View History

2025-02-17 18:18:14 +02:00
from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import RedirectResponse
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from model.database import init_db
from routers import index, logins, users, product, profile, jobs
import logging
# Создаём таблицы в БД
init_db()
# Инициализация приложения
app = FastAPI()
# Настройка шаблонов
templates = Jinja2Templates(directory="templates")
# Подключение статики (делаем это ОДИН раз)
app.mount("/static", StaticFiles(directory="static"), name="static")
# Подключение маршрутов
app.include_router(index.router, tags=["callback"])
app.include_router(logins.router, tags=["login"])
app.include_router(users.router, tags=["users"])
app.include_router(product.router, tags=["product"])
# Подключение роутеров
app.include_router(profile.router, tags=["Profile"])
app.include_router(jobs.router, tags=["Jobs"])
# Обработка 404
@app.exception_handler(404)
async def not_found(request: Request, exc: HTTPException):
return templates.TemplateResponse("working.html", {"request": request}, status_code=404)
@app.exception_handler(HTTPException)
async def auth_exception_handler(request: Request, exc: HTTPException):
if exc.status_code == 401:
return RedirectResponse(url="/login")
return RedirectResponse(url="/error")
@app.on_event("startup")
async def startup():
await init_db()