2012-07-05 7 views
6

Ich schreibe eine Django-App, in der die Benutzer Bilder hochladen können, und ich bin mir nicht sicher, wie ich sie bedienen soll. Ich kann zwei Möglichkeiten sehen:Wie kann man von Nutzern hochgeladene Dateien in Django bereitstellen?

1- hochladen sie als statische Dateien: laden Sie sie in den Ordner static in meinem Projekt Verzeichnis, und dann ausführen, aber ich weiß nicht, wie dieser Befehl automatisch jedes Mal eine Datei ausführen wird hochgeladen, und das scheint eine Menge Verarbeitung zu sein, weil der Server jedes Mal in meiner statischen App alles löschen und neu laden wird.

2- Verwendung django.views.static.serve in meinem urls.py:

url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.MEDIA_ROOT, 
    }), 

aber the doc ist es nicht für die Produktion empfehlen.

Was ist die empfohlene Methode, um von Benutzern hochgeladene Dateien zu unterstützen?

+0

Ich denke, seine eine gute Idee, diese Dateien über Apache oder eine ähnliche Webserver zu dienen. Wenn Sie weitere Kontrolle wie Benutzerberechtigungen benötigen, könnte mod_xsendfile eine Option sein. – Jingo

Antwort

2

Ihre hochgeladenen Dateien gehen in MEDIA_ROOT und können mit MEDIA_ROOT bedient werden. Sie müssen diese Parameter in settings.py festlegen.

Ihre Entwicklung können Sie ihnen django dev Server dienen, aber Sie können es von Apache oder anderen Servern dienen zu konfigurieren.

Siehe Django managing stored files

+0

Haben Sie ein Beispiel dafür, wie Sie es konfigurieren, um von Apache zu dienen? – jul

+0

verwenden Sie die gleiche Konfiguration, die Sie für Ihre statischen Dateien verwenden. Oder fragen Sie, wie man Apache so konfiguriert, dass Dateien im Allgemeinen bereitgestellt werden? – scytale

+0

Ich benutze webfaction hosting und befolgte die Anweisungen für die Bereitstellung von statischen Medien in http://docs.webfaction.com/software/django/getting-started.html. Dies ist für 'django.contrib.staticfiles' gedacht, aber ich brauche ein anderes Verzeichnis, in das ich Dateien hochladen und sie bedienen kann, ohne'django.contrib.staticfiles' zu verwenden. Ich werde im webfaction spezifischen Forum fragen. Vielen Dank. – jul

Verwandte Themen