如何在django python中为servinf可下载文件创建公共函数/视图

如何在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-

我正在显示html表中的对象列表。 我在每一行前面都有下载链接,我希望他们下载链接文件

我做了这个函数

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