This commit is contained in:
2026-04-09 16:47:51 +05:00
parent 3a690ecf39
commit ed6de0a4cb

View File

@@ -94,6 +94,24 @@ async def register(
return None return None
elif resp.status_code == 400: elif resp.status_code == 400:
return resp.json().get("detail", "Ошибка регистрации") return resp.json().get("detail", "Ошибка регистрации")
elif resp.status_code == 422:
# Ошибки валидации Pydantic — извлекаем первое понятное сообщение
errors = resp.json().get("detail", [])
_field_names = {"password": "Пароль", "username": "Логин"}
_msg_map = {
"Password must be at least 8 characters": "Пароль должен быть не менее 8 символов",
"Username must be at least 3 characters": "Логин должен быть не менее 3 символов",
}
for err in errors:
raw = err.get("ctx", {}).get("error") or err.get("msg", "")
if raw in _msg_map:
return _msg_map[raw]
# fallback: поле + сообщение
loc = err.get("loc", [])
field = _field_names.get(loc[-1] if loc else "", "")
msg = err.get("msg", "Ошибка валидации").removeprefix("Value error, ")
return f"{field}: {msg}".strip(": ")
return "Проверьте правильность введённых данных"
return f"Ошибка сервера: {resp.status_code}" return f"Ошибка сервера: {resp.status_code}"
except httpx.ConnectError: except httpx.ConnectError:
return "Не удалось подключиться к серверу" return "Не удалось подключиться к серверу"