【问题标题】:How can I download the exact uploaded file in Django?我如何在 django 中下载确切上传的文件..?
【发布时间】:2021-11-17 22:26:12
【问题描述】:

我正在编写一个代码来使用我通过 django 中的模型上传的链接下载我的文件。

即在我的 model.py

class uploadFile(models.Model):
    id=models.CharField("Book id ",max_length=200,null=True,default="")
    name=models.CharField("Book name",max_length=200,null=True,default="")
    file=models.FileField(upload_to="media/ebooks")

在我的 view.py 我有 2 个函数

def getdata(request):
    books=uploadFile.objects.all()
    n=len(QPapers)
    print("hello",QPapers)
    params={'QPapr':QPapers,'total_items':n}
    return render(request,'index.html',params)

def getdata2(request,nameparam):
    books=uploadFile.objects.all().filter(name=nameparam)
    n=len(QPapers)
    print("hello",QPapers)
    params={'QPapr':QPapers,'total_items':n}
    return render(request,'index.html',params)

index.html

 <a href="{% 'getdata' %}" download>download1</a>

因为这个 urls.py 是path('getdata',views.pdfNotes,name='pdfNotes'),

这里使用上面的代码正确下载文件 但是当我使用下面的代码并以 book 的名称调用第二个函数时,而不是下载我上传的文件,而是下载 index.html 页面。

<a href="{% 'getdata2' 'book1' %}" download>download2</a>

因为这个 urls.py 是path('getdata2/&lt;str:name&gt;/',views.pdfNotes,name='pdfNotes'),

是因为我正在使用过滤器吗?还是问题出在其他地方? 我也想下载特定文件,这就是我在这里使用过滤器的原因...... 如果您有任何解决方案,请分享。

【问题讨论】:

    标签: python html django jinja2 downloadfile


    【解决方案1】:

    您的视图参数的名称是nameparam,而不是name,因此您可以在 URL 模式中指定:

    #                      &downarrow; not name
    path('getdata2/<str:nameparam>/',views.pdfNotes,name='pdfNotes'),

    【讨论】:

    • sry,我已经更正了导致 url 错误的“参数名”...,但问题在于下载文件,它仍在下载 .html 页面而不是 doc 文件...你也可以为此提出任何解决方案吗?谢谢你,威廉...
    • @AshwinBehera:但是您的所有视图都呈现一个 HTML 文件,因此在这两种情况下,它将下载呈现的 HTML 文件,而不是存储在存储中的某些文件。
    • 要下载文件,您应该使用 Django,而是使用 nginx/Apache/... 服务器,因为 Django 可能无法有效或安全地执行此操作.
    • @AshwinBehera:有关详细信息,请参阅文档的 serving files section
    • 在第一个函数中它会下载存储的文件...我也尝试通过创建其他函数来下载其他存储的文件。但是当我在第二个函数中使用这个过滤器时,它只会下载 .html 文件。我不知道为什么?
    猜你喜欢
    • 2021-02-16
    • 2017-03-16
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2018-09-05
    • 2021-06-02
    • 2014-09-20
    相关资源
    最近更新 更多