Python 如何从django管理员下载文件
我在models.py的类部件中创建了FileField。我还通过方法file_link(self)获取此文件的链接: 因此,在我的django管理员中,我有一个FileField,它允许将文件上传到origin_文件目录并链接到这个文件。但当我点击这个链接时,我将重定向到我网站的主页。例如,我下载了文件presentation.pptx。当我得到这个文件的url时,我得到Python 如何从django管理员下载文件,python,django,Python,Django,我在models.py的类部件中创建了FileField。我还通过方法file_link(self)获取此文件的链接: 因此,在我的django管理员中,我有一个FileField,它允许将文件上传到origin_文件目录并链接到这个文件。但当我点击这个链接时,我将重定向到我网站的主页。例如,我下载了文件presentation.pptx。当我得到这个文件的url时,我得到 如何下载此文件?您必须在django设置中配置媒体URL Django通过以下方式构建您的url: settings.
如何下载此文件?您必须在django设置中配置
媒体URL
Django通过以下方式构建您的url:
settings.MEDIA\u URL+“源文件/Presentation.pptx”
媒体URL默认为空字符串,因此您会得到URL“origin\u files/Presentation.pptx”,浏览器会将其连接到当前页面,因为URL不是以斜杠开头的
因此,您必须将媒体URL设置为“/MEDIA/”
然后一切都将在您的开发环境中工作
在远程服务器上,这还需要适当地配置web服务器,使其为您的媒体根目录到媒体URL提供服务(显然超出了本问题的范围)。这里有一些奇怪的事情。那块石头的意义是什么?这段代码永远无法提升PageNotAnInteger.hmm,在my settings.py中没有媒体_URL@SBrain,我明白了-我相应地更新了答案(您必须对其进行配置),简言之:您只需将其设置为“/media/”即可使其正常工作。但是要下载这个文件,我必须添加到URL.py urlpatterns+=static(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)@SBrain,你说得对,谢谢,但我建议在“if settings.DEBUG:”子句中进行,并在生产中使用你的web服务器来提供这些文件(正如Django docs推荐的那样)
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
readonly_fields = ('file_link',)
fieldsets = (
('Характеристики плёнки', {
'fields': (....'data', 'origin', 'file_link')
}),
)