首页 > 解决方案 > 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')

这里的额外问题是如何接受用户选择的首选转换格式并在此视图功能中使用?

标签: pythondjango

解决方案


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 视图中,您可以从请求中访问它

download_path = request.POST.get("download_path")

转换格式也是如此,只需将其添加到表单并从请求对象访问它即可。

虽然你真的应该考虑使用表格:https ://docs.djangoproject.com/en/3.2/topics/forms/


推荐阅读