Заметил, что каждая карточка тянет страницу или делает лишние запросы. После раздумий отдал список карточек одной порцией на страницу, а пролистывание оставил браузеру. Сэкономил и запросы, и ощущение «дёрганости». Это был маленький инсайт про то, что не любой интерактив требует сервер на каждый шаг.

Нейтрально: выборку карточек можно один раз загрузить клиенту, а переключение делать локально — меньше трафика для малого набора.

cards_data = [{"q": c.question, "a": c.answer} for c in cards]
# кладём в контекст как JSON для скрипта страницы

Довольно приятно проектировать «лёгкое» взаимодействие, а не грузить сервер по мелочи. Ещё один навык — думать, что именно в каком слое обрабатывать. Начинаю чувствовать архитектуру потока, а не только отдельную функцию.