如何在django python中为servinf可下载文件创建公共函数/视图
我正在显示html表中的对象列表。 我在每一行前面都有下载链接,我希望他们下载链接文件 我做了这个函数如何在django python中为servinf可下载文件创建公共函数/视图,python,django,download,Python,Django,Download,我正在显示html表中的对象列表。 我在每一行前面都有下载链接,我希望他们下载链接文件 我做了这个函数 def make_downloadable_link(path): #Prepare the form for downloading wrapper = FileWrapper(open(mypath)) response = HttpResponse(wrapper,'application/pdf') response['Content-
def make_downloadable_link(path):
#Prepare the form for downloading
wrapper = FileWrapper(open(mypath))
response = HttpResponse(wrapper,'application/pdf')
response['Content-Length'] = os.path.getsize(mypath)
fname = mypath.split('/')[-1]
response['Content-Disposition'] = 'attachment; filename= fname'
return response
如果我将它用于单个文件的视图中的硬编码路径,这将很好地工作。但是我想创建一个通用视图,以便它可以处理表中的所有文件
我在object.path
变量中有可用的文件路径,但我不知道如何将path对象传递到download文件视图。因为我想对用户隐藏实际路径
我不知道在下载文件视图的url.py文件中写什么,您想做的是从对象获取实际的文件路径。正如您所说,文件路径存储在
object.path
中,这使它变得简单
例如:
url.py
url(r'^download/(?P<object_id>\d+)/$', "yourapp.views.make_downloadable_link", name="downloadable")
我试过了,但django说没有定义url,也没有针对这个问题定义url。我希望存储在某个目录中的文件用作下载,而不一定是文件字段
def make_downloadable_link(object_id):
# get object from object_id
object = ObjectModel.objects.get(id=object_id)
mypath = object.path
#prepare to serve the file
wrapper = FileWrapper(open(mypath))
response = HttpResponse(wrapper,'application/pdf')
response['Content-Length'] = os.path.getsize(mypath)
fname = mypath.split('/')[-1]
response['Content-Disposition'] = 'attachment; filename= fname'
return response