2016-03-23 16 views
0

Ich weiß, dass Derivate dieser Frage bereits gestellt wurden. Aber diese Fragen sind veraltet und ich würde gerne neue Antworten für neue Versionen hören.Wie Dateien zum Download in Django dienen?

Ich habe ein Modell und es hat ein Dateifeld darin.

class MyModel(models.Model): 
    field = models.FileField() 

kann ich Dateien mit diesem Modell laden, indem Sie den Admin-Panel von django mit und ich kann seine Position mit den MEDIA_ROOT Einstellungen Variable gesetzt. Aber ich kann diese Datei nicht in der Ansicht herunterladen. Ich habe versucht, seine URL gegeben, aber ich bekomme normalerweise den Fehler "404 nicht gefunden".

def download(request): 
    file = # code to get the the model instance. 
    context = {'file': file} 
    return render(request, template, context) 

Hier ist der Code in Vorlage:

<a href="{{file.field.url}}">Download Link</a> 

Dies wirft einen 404 Fehler. Ich weiß, warum es diesen Fehler verursacht. Weil für diese URL keine URL-Definitionen existieren.

Also, wie kann ich diese Datei herunterladen?

Django 1.8.7, Python 3.4.3, ubuntu 14.04

+1

Die Antworten sind die gleichen zu bekommen, wie sie immer waren; Sie müssen Ihren Webserver (nicht Django) konfigurieren, um Dateien von MEDIA_ROOT bei MEDIA_URL zu senden. –

+0

@DanielRoseman Können Sie mich auf eine Dokumentation oder eine Referenz zur Konfiguration des Webservers hinweisen? – Bora

Antwort

1

In Entwicklung, können Sie dies tun MEDIA_URL aktiv

from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = [ 
    # ... the rest of your URLconf goes here ... 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
Verwandte Themen