Ich benutze django-tables2
und habe eine Ansicht, die grundsätzlich Benutzer Zugriff auf den Datenspeicher ermöglichen sollte. Mein Tischmodell ein Link Spalt hat sich wie folgt:herunterladbare Dateilink in Django-Tabellen
class DummyTable(tables.Table):
download = tables.LinkColumn('dummy_download', args=[tables.A('pk')], orderable=False,
empty_values=(), verbose_name='')
Die Wiedergabe der Link Spalte wie folgt durchgeführt wird:
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>')
Also im Grunde habe ich einige Daten in meinem /media
Ordner, die ich mag um dem Benutzer das Herunterladen zu ermöglichen, wenn auf den Link geklickt wird. Ich bin jedoch nicht in der Lage, den richtigen Link in der render_download
Methode zu generieren. Wenn ich den Link einfach so anlege, wie ich ihn habe, wird kein Download gestartet, obwohl er auf den korrekten Speicherort der Datei (lokal) zu zeigen scheint. Ich bin mir auch nicht sicher, ob das funktioniert, wenn jemand aus der Ferne eine Verbindung herstellt. Ich habe das Gefühl, es sollte intern eine reST-API aufrufen, um den Download zu starten, aber ich bin mir nicht sicher, wie ich das erreichen soll.
Die settings.py
Datei konfiguriert die media
Einstellungen wie folgt:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Ich versuchte, die MEDIA_URL
als Link verwenden, aber dann versucht er es mit URL-Konfigurationen und kehrt zu passen mit:
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.
Danke für die Antwort! Ich habe es versucht, aber es versucht, es mit URL-Mustern zu vergleichen. Ich habe die Antwort aktualisiert, um den Fehler zu enthalten. – Luca
Sie haben mich dazu geschlagen. Ich habe gerade geschrieben, dass ich es herausgefunden habe! – Luca