FastAPI’da main içerisinde template response dönebilirken routers klasöründen template response dönemiyorum. acaba yaklaşımım mı yanlış?
.
└── app/
├── routers/
│ ├── price_search.py
│ ├── admin.py
│ ├── booking.py
│ └── autocomplete.py
├── main.py
├── database.py
└── models.py
main.py
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import RedirectResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from routers import admin, autocomplete, price_search, booking
import models
from database import engine
models.Base.metadata.create_all(bind=engine)
app = FastAPI(
title="Flight Widget",
description="Flight Widget API docs by SAN"
)
origins = ["*"]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
templates = Jinja2Templates(directory="./ui")
app.mount("/ui", StaticFiles(directory="ui"), name="ui")
app.include_router(autocomplete.router)
app.include_router(admin.router)
app.include_router(price_search.router)
app.include_router(booking.router)
@app.get("/")
def entry(request: Request):
return templates.TemplateResponse("index.html", context={"request": request, "data": "data"})
price_search.py
from fastapi import APIRouter, Depends, Request
from main import templates
import requests
from conf import (
DEFAULT_PRICE_SEARCH_PARAMETERS,
FLIGHT_SEARCH_SERVICE_URI,
URL,
)
import deps
router = APIRouter(tags=["Price Search"])
@router.get("/pricesearch")
def price_search(
request: Request,
model: deps.PriceSearchParams = Depends(),
token=Depends(deps.check_token),
):
data_dict = model.get_as_dict()
data_dict.update(DEFAULT_PRICE_SEARCH_PARAMETERS)
print(data_dict)
headers = {"Authorization": f"Bearer {token}"}
url = URL + FLIGHT_SEARCH_SERVICE_URI
r = requests.post(url, json=data_dict, headers=headers)
return templates.TemplateResponse("price_search.html", context={"request": request, "data": r.json()})
bu routerda mainden templates’i import edemiyor. verdiği hata şu şekilde
ERROR: Error loading ASGI app. Could not import module "main".