我在FileField中的类部件中创建了models.py。另外,我还通过方法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。当我得到这个文件的url,我得到
files/Presentation.pptx
我怎么能下载这个文件?
发布于 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 (显然超出了这个问题的范围)。
https://stackoverflow.com/questions/50764746
复制相似问题