Кнопка загрузки файла в Django принимает путь
Я создаю приложение, которое позволяет пользователям конвертировать их файлы .ifc (3D-модели) в другие формы данных (.xlsx, фильтрованный .xlsx, json). Мне удалось реализовать часть загрузки, но теперь я не уверен насчет загрузки.
Я хотел бы создать кнопку "скачать", которая принимает желаемый путь загрузки (возможно даже имя файла). Когда у меня есть путь, я могу запустить функцию конвертации с последним загруженным файлом.
def model_form_download(request):
if request.method == 'POST':
download_path = ??? #How to take in the user defined upload path?
last_model = Document.objects.latest("uploaded_at")
last_model_name = last_model.document.name
MODEL_DIR = Path(MEDIA_DIR) / last_model_name
model = parser(MODEL_DIR)
xlsx_name = Path(last_model_name).stem
XLS_DIR = Path(download_path) / (xlsx_name + '.xlsx')
model[1].to_excel(XLS_DIR)
return render(request, 'core/model_form_download.html')
return render(request, 'core/model_form_download.html')
Дополнительный вопрос здесь заключается в том, как принять выбор пользователем предпочтительного формата преобразования и использовать его в этой функции просмотра?
def model_form_download(request):
if request.method == 'POST':
download_path = ??? #How to take in the user defined upload path?
last_model = Document.objects.latest("uploaded_at")
last_model_name = last_model.document.name
MODEL_DIR = Path(MEDIA_DIR) / last_model_name
model = parser(MODEL_DIR)
xlsx_name = Path(last_model_name).stem
XLS_DIR = Path(download_path) / (xlsx_name + '.xlsx')
model[1].to_excel(XLS_DIR)
return render(request, 'core/model_form_download.html')
return render(request, 'core/model_form_download.html')
Как принять заданный пользователем путь загрузки?
если у вас есть форма на фронтенде, например, такая:
<form>
<input name="download_path" .../>
...
Затем в представлении django вы можете получить доступ к нему из request
download_path = request.POST.get("download_path")
то же самое касается формата преобразования, просто добавьте его в форму и обращайтесь к нему из объекта запроса.
хотя на самом деле вам стоит подумать об использовании форм: https://docs.djangoproject.com/en/3.2/topics/forms/