如何在django中提供下载文件?

时间:2016-03-23 10:08:15

标签: python django python-3.x

我知道这个问题的衍生物已经被问到了。但是那些问题已经过时了,我想听听新版本的一些新答案。

我有一个模型,里面有一个文件字段。

class MyModel(models.Model):
    field = models.FileField()

我可以使用django的管理面板上传此模型的文件,我可以使用MEDIA_ROOT设置变量设置其位置。但是我无法在视图中下载此文件。我试过给它的URL,但我经常得到“404 not found”错误。

def download(request):
     file = # code to get the the model instance.
     context = {'file': file}
     return render(request, template, context)

以下是模板中的代码:

<a href="{{file.field.url}}">Download Link</a>

这会引发404错误。我知道为什么它会抛出这个错误。因为该URL没有url deffinitions。

那么,我该如何下载这个文件?

Django 1.8.7,Python 3.4.3,ubuntu 14.04

1 个答案:

答案 0 :(得分:1)

在开发过程中,您可以执行此操作以使MEDIA_URL处于活动状态

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)