首页 > 解决方案 > 如何在 Django 中下载准确的上传文件?

问题描述

我正在编写一个代码来使用我通过 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'),

在这里,文件使用上面的代码正确下载,但是当我使用下面的代码并调用带有书名的第二个函数时,而不是下载文件,我已经上传了它下载index.html页面。

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

对于这个 urls.py 是 path('getdata2/<str:name>/',views.pdfNotes,name='pdfNotes'),

是因为我使用的过滤器,还是其他地方的问题?我也想下载特定文件,这就是我在这里使用过滤器的原因......

标签: pythonhtmldjangodownloadjinja2

解决方案


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

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

推荐阅读