diff options
author | Medvedev Stanislav <medvedevsa97@gmail.com> | 2024-06-09 22:17:30 +0300 |
---|---|---|
committer | Medvedev Stanislav <medvedevsa97@gmail.com> | 2024-06-09 22:17:30 +0300 |
commit | 2e50db236fa5d922bf18061140e497d6c5d0237c (patch) | |
tree | fb1dd513ca0399126649ca2d43a43291b567e6d6 /app/main.py | |
parent | 71504b8fbf84a02f169f84fc1b782a495ab0d780 (diff) |
client_geo на html странице
Diffstat (limited to 'app/main.py')
-rw-r--r-- | app/main.py | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/app/main.py b/app/main.py index 1c4590e..d9ea01c 100644 --- a/app/main.py +++ b/app/main.py @@ -1,12 +1,36 @@ from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse from starlette.templating import Jinja2Templates +import httpx app = FastAPI() templates = Jinja2Templates(directory="templates") +def get_client_host(request: Request): + return request.client.host + + +async def get_client_geo(client_host: str): + async with httpx.AsyncClient() as client: + response = await client.get( + # использование https платная опция сервиса, инфо тут https://members.ip-api.com/ + url='http://ip-api.com/json/{}'.format(client_host), + params={"lang": "ru"} + ) + data = response.json() + return data + + @app.get("/", response_class=HTMLResponse) -async def read_root(request: Request): - return templates.TemplateResponse("index.html", {"request": request}) +async def index(request: Request): + return templates.TemplateResponse( + "index.html", + { + "request": request, + "client_geo": await get_client_geo( + get_client_host(request) + ) + } + ) |