Django下载一个文件

我对使用Django非常陌生,我正在尝试开发一个网站,用户可以在其中上载许多excel文件,然后将这些文件存储在媒体文件夹Webproject/project/media中。

def上传(请求):
如有要求,请发送:
form=FileForm(request.POST、request.FILES)
如果form.is_有效():
form.save()
返回render\u to\u response(’project/upload\u successful.html’)
其他:
form=FileForm()
args={}
参数更新(csrf(请求))
args[‘form’]=form
返回render\u to\u响应(’project/create.html’,args)

然后,该文档将与他们上载的任何其他文档一起显示在列表中,您可以单击该列表,它将显示他们的基本信息以及他们上载的Excel文件的名称。从这里,我希望能够使用以下链接再次下载相同的excel文件:

<a href=”https://stackoverflow.com/project/download“>下载文件&lt/a>

我的网址是

urlpatterns=[
url(r'^$',ListView.as_视图(queryset=Post.objects.all().order_by(“-date”)[:25],
template_name=“project/project.html”),
url(r'^(?P<pk>\d+)$,DetailView.as_view(model=Post,template_name=“project/Post.html”),
url(r'^upload/$,upload),
url(r“^download/(?P<path>*)$”,服务,{'document root':settings.MEDIA_root}),
]+静态(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)

但是我得到了一个错误,serve()得到了一个意外的关键字参数“documentroot”。有人能解释一下如何解决这个问题吗

解释我如何使用

def下载(请求):
file_name=#获取所需excel文件的文件名
path_to_file=#获取所需excel文件的路径
response=HttpResponse(mimetype=’application/force download’)
响应[‘Content-Disposition’]=’附件;文件名=%s“%smart\u str(文件名)
响应[‘X-Sendfile’]=smart\u str(路径到文件)
返回响应

您在参数文档根中缺少下划线。但在生产中使用服务是个坏主意。改用类似的方式:

导入操作系统
从django.conf导入设置
从django.http导入HttpResponse,Http404
def下载(请求,路径):
file\u path=os.path.join(settings.MEDIA\u ROOT,path)
如果os.path.存在(文件路径):
打开(文件路径“rb”)作为fh:
response=HttpResponse(fh.read(),content_type=“application/vnd.ms excel”)
响应['Content-Disposition']='内联;filename='+os.path.basename(文件路径)
返回响应
提高Http404

发表评论