Проект, на котором подключены FastAPI и Django одновременно. Django используется только как ORM и админка, FastAPI используется для запросов.
База данных игроков и игр. В игре может быть не более 5 игроков. Игроки и игры создаются при помощи API-вызовов с применением аутентификации по методу JWT(OpenAPI-документация доступна по запросу на http://localhost:8000/docs).
- Django.
- FastAPI.
Поднять всю инфраструктуру проекта по http://localhost:8000/.
docker-compose docker-compose up -d
Правки применяются автоматически(благодаря --reload(command в docker-compose), файлы внутри контейнеров и на локальной машине синхронизированы через volumes(docker-compose).
Внутрь контейнера с python можно попасть, используя команды:
docker ps #отобразит список всех контейнеров
docker exec -ti <container_id> bash #войдет в запущенный контейнер для выполнения команд, например - создания superuser
Для генерации токена доступа к API:
export TOKEN="$( curl -H "Content-Type: application/json" -X POST \
-d '{"username":"test","password":"test"}' http://localhost:8000/login | \
py -c "import sys, json; print(json.load(sys.stdin)['access_token'])" )"
К curl-запросам необходимо добавлять заголовок авторизации:
-H "Authorization: Bearer $TOKEN"
- Отобразить в списке игроков: имя, email, дату и время создания игрока, дату и время изменения игрока(в нашем случае только через админку);
- добавить поиск по имени или email.
- Отобразить в списке игр название игры и имена игроков через запятую(отдельным столбцом), дату и время создания игры, дату и время изменения игры.
- На странице редактирования игры отобразить inline'ами всех привязанных игроков.
- При создании игрока(/new_player) его имя и email должны быть уникальны.
- Имя должно содержать только цифры от 0 до 9 и только буквы от a до f.
- Если пользователь с таким email и name уже существует, необходимо вернуть ошибку с HTTP-кодом 400, status = "error", текстом "player with such name or email already exists".
- Аналогичную ошибку необходимо вернуть при ошибке валидации имени пользователя или e-mail'а с указанием соответствующего текста ошибки.
- Реализовать логику для метода /add_player_to_game
- Можно ли получить 500 ошибку при отправке данных, величина которых не предусмотрена БД? (валидация данных)
- при запросе игрок с указанным id должен добавляться в игру с указанным id.
- Если игрока или игры с заданными id не существует, должна возвращаться ошибка с HTTP-кодом 400, status = "error" и соответствующим текстом.
- Количество игроков одной игре не более 5.