Создание динамической асинхронной файловой системы в django: лучшие практики
Я пытаюсь перестроить наш сайт на Django, и в настоящее время я столкнулся с рядом довольно сложных проблем, к которым я не готов. Я надеялся получить некоторую помощь в этом вопросе.
Сайт, который я создаю, - это онлайновая архивная платформа для художников под названием Lekha. Ядром Lekha является страница приборной панели (которую вы можете проверить по этой ссылке, просто войдите с помощью электронной почты stacko@test.com и пароля test, если у вас хватит терпения).
На странице приборной панели пользователи имеют доступ к иерархической файловой системе, которую мы хотели бы использовать как файловую систему рабочего стола для простоты использования. Пользователи могут использовать файловую систему для организации своих "произведений искусства" в папки. Сами работы представляют собой коллекцию медиафайлов, а также метаданные о них. Чтобы загрузить медиа и заполнить метаданные, пользователи используют форму. Если пользователи хотят отредактировать метаданные произведения искусства, они могут сделать это через автоматически заполняемую форму на той же странице.
Проблема, с которой я столкнулся, заключается в том, что я пытаюсь найти элегантный способ сделать все это без перезагрузки страницы. Пользователи должны иметь возможность добавлять, удалять и переименовывать папки в файловой системе без перезагрузки страницы (как в dropbox). Они также должны иметь возможность добавлять записи в базу данных "произведений искусства" с помощью всплывающей формы и редактировать созданные ими "произведения искусства" с помощью автозаполняемой формы, которая также предоставляется им без перезагрузки страницы (как это сейчас реализовано на нашей существующей странице приборной панели).
Во всех учебниках по Django, которые я видел, элементы удаляются с помощью специальной страницы /delete/, но это требует перезагрузки страницы. Исходя из моих исследований, решение, которое я ищу, связано с асинхронным обновлением через AJAX.
Я хотел бы спросить всех экспертов по Django о том, как лучше поступить в этом случае. Есть ли какие-то лучшие практики, о которых я должен знать, прежде чем приступать к этому? Мы создаем наш сайт, чтобы он был надежным и хорошо масштабировался. Есть ли какие-то конкретные библиотеки для асинхронных вещей в Django, которые лучше всего подходят? Как асинхронные веб-сайты масштабируются, если на них одновременно работают несколько пользователей, и нужно ли писать бэкенд каким-то особым образом, чтобы учесть потенциальные проблемы масштабирования? В чем разница между ASGI и WSGI? Есть ли инструменты, которые я могу использовать, такие как htmx, чтобы облегчить себе жизнь?