如何从django admin下载文件

时间:2018-06-08 16:19:30

标签: python django

我在 models.py 中的 class Part 中创建了 FileField 。此外,我通过方法 file_link(self)

获取此文件的链接
origin = models.FileField(upload_to='origin_files', null=True, blank=True)

    def file_link(self):
        try:
                return "<a href='%s'>download</a>" % (self.origin.url,)
        except PageNotAnInteger:
            return "<a href=127.0.0.1:8000/main>download</a>"

    file_link.allow_tags = True

在admin.py中,我为 file_link 添加了 readonly_fields 。我还添加了字段集 file_link

readonly_fields = ('file_link',)

fieldsets = (
    ('Характеристики плёнки', {
        'fields': (....'data', 'origin', 'file_link')
    }),

)

因此,在我的django管理员中,我有FileField,它允许将文件上传到目录 origin_files 并链接到此文件。但是,当我点击此链接时,我将重定向到我网站的主页。例如,我下载了文件presentation.pptx。当我得到这个文件的网址时,我得到了

  

http://127.0.0.1:8000/admin/description/part/12/change/origin_files/Presentation.pptx

我如何下载此文件?

1 个答案:

答案 0 :(得分:1)

您必须在django设置中配置MEDIA_URL

https://docs.djangoproject.com/en/2.0/ref/settings/#media-url

Django通过以下方式构建您的网址:

settings.MEDIA_URL +“origin_files / Presentation.pptx”

MEDIA_URL默认为空字符串,因此您获取网址“origin_files / Presentation.pptx”并且您的浏览器将其连接到当前页面,因为该网址不是以斜杠开头。

因此您必须将MEDIA_URL设置为'/ media /'

然后一切都将在您的开发环境中运行。

在远程服务器上,这还需要适当地配置Web服务器,以便将MEDIA_ROOT提供给MEDIA_URL(显然超出了这个问题的范围)。