Django 表中的可下载文件 link
downloadable file link in django tables
我正在使用 django-tables2
并且有一个基本上应该允许用户访问数据存储的视图。我的table模型有一个link列如下:
class DummyTable(tables.Table):
download = tables.LinkColumn('dummy_download', args=[tables.A('pk')], orderable=False,
empty_values=(), verbose_name='')
link列的渲染如下:
class Meta:
model = DummyModel
attrs = {'class': 'paleblue'}
def render_download(self):
url = static('cloud-download.png')
media_root = settings.MEDIA_ROOT
href = media_root + "/mask.nii.gz"
return mark_safe('<a href="' + href + '"><img src="' + url + '"></a>')
基本上我的 /media
文件夹中有一些数据,我希望用户在单击 link 时可以下载这些数据。但是,我无法在 render_download
方法中生成正确的 link。简单地放置 link 它不会启动任何下载,即使它似乎指向正确的文件位置(本地)。另外,我不确定当有人远程连接时这是否有效。我觉得它应该在内部调用一些 reST API 来启动下载,但我不确定如何实现这一点。
settings.py
文件配置 media
设置如下:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
我尝试将 MEDIA_URL
用作 link,但随后它尝试将其与 url 配置和 returns 与:
匹配
Using the URLconf defined in cloud.urls, Django tried these URL patterns, in this order:
^admin/
^$ [name='index']
^login/$ [name='login']
^logout/$ [name='logout']
^images/$ [name='images']
^static\/(?P<path>.*)$
The current URL, media/mask.nii.gz, didn't match any of these.
我认为你应该得到 MEDIA_URL
的值而不是 MEDIA_ROOT
:
def render_download(self):
url = static('cloud-download.png')
href = settings.MEDIA_URL + "/mask.nii.gz"
return mark_safe('<a href="' + href + '"><img src="' + url + '"></a>')
您可能需要将以下内容添加到主 urls.py
以便您的媒体文件可以由开发 Web 服务器提供服务。
# urls.py
...
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = [
# ...your routes...
]
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我正在使用 django-tables2
并且有一个基本上应该允许用户访问数据存储的视图。我的table模型有一个link列如下:
class DummyTable(tables.Table):
download = tables.LinkColumn('dummy_download', args=[tables.A('pk')], orderable=False,
empty_values=(), verbose_name='')
link列的渲染如下:
class Meta:
model = DummyModel
attrs = {'class': 'paleblue'}
def render_download(self):
url = static('cloud-download.png')
media_root = settings.MEDIA_ROOT
href = media_root + "/mask.nii.gz"
return mark_safe('<a href="' + href + '"><img src="' + url + '"></a>')
基本上我的 /media
文件夹中有一些数据,我希望用户在单击 link 时可以下载这些数据。但是,我无法在 render_download
方法中生成正确的 link。简单地放置 link 它不会启动任何下载,即使它似乎指向正确的文件位置(本地)。另外,我不确定当有人远程连接时这是否有效。我觉得它应该在内部调用一些 reST API 来启动下载,但我不确定如何实现这一点。
settings.py
文件配置 media
设置如下:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
我尝试将 MEDIA_URL
用作 link,但随后它尝试将其与 url 配置和 returns 与:
Using the URLconf defined in cloud.urls, Django tried these URL patterns, in this order:
^admin/
^$ [name='index']
^login/$ [name='login']
^logout/$ [name='logout']
^images/$ [name='images']
^static\/(?P<path>.*)$
The current URL, media/mask.nii.gz, didn't match any of these.
我认为你应该得到 MEDIA_URL
的值而不是 MEDIA_ROOT
:
def render_download(self):
url = static('cloud-download.png')
href = settings.MEDIA_URL + "/mask.nii.gz"
return mark_safe('<a href="' + href + '"><img src="' + url + '"></a>')
您可能需要将以下内容添加到主 urls.py
以便您的媒体文件可以由开发 Web 服务器提供服务。
# urls.py
...
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = [
# ...your routes...
]
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)