В настоящее время я работаю над проектом, который много работает с файлами iCalendar. Где после того, как пользователь ищет свое имя на моем веб-сайте, я хотел бы, чтобы у него была возможность добавить события, отображаемые в его телефонные календари. Я мог предположить, что это можно сделать, создав файл .ics. Когда пользователь щелкнет по нему, файл начнет загружаться на основе имени пользователя.
Итак, что я сделал до сих пор, это Django посмотреть, что при нажатии кнопки «Добавить в календарь» представление отображается. В этом случае представление просто запрашивает имя и получает его ics_string или данные календаря. Вот мнение, которое я написал до сих пор
def serve_calendar(request):
name = request.GET.get('name', '')
ics_string = get_calendar_details(name)
#the portion of code that i can't figure out
return response
Что мне не хватает - это как отправить этот файл для загрузки на компьютер клиента без необходимости создавать его на сервере. Я нашел некоторые ответы, используя io.StringIO и FileWrapeprs из библиотеки Django, но они не сработали для меня. Другие ответы, которые я нашел, используют X-SendFile, но это не будет работать для меня, так как для этого требуется путь к файлу, и я не хочу, чтобы файл создавался на сервере.
Я в настоящее время используется Python 3.7.4 64-разрядная с Django версия 2.2.7