首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从django管理员下载文件

如何从django管理员下载文件
EN

Stack Overflow用户
提问于 2018-06-08 16:19:30
回答 1查看 2.4K关注 0票数 0

我在FileField中的类部件中创建了models.py。另外,我还通过方法file_link(self)获得了该文件的链接。

代码语言:javascript
复制
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。

代码语言:javascript
复制
readonly_fields = ('file_link',)

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

)

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

files/Presentation.pptx

我怎么能下载这个文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 16:50:18

您必须在django设置中配置MEDIA_URL

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

Django以以下方式构建您的url:

settings.MEDIA_URL +“源文件/Presentation.pptx”

MEDIA_URL默认值是一个空字符串,因此您得到url“源文件/Presentation.pptx”,浏览器将其连接到当前页面,因为url不以斜杠开头。

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

然后,一切都将在您的开发环境中工作。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50764746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档