Кнопка загрузки файла в 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/

Вернуться на верх