2017-02-04 11 views
0

VERTEILUNG DES LAUFENDEN PROBLEM:Serving Mediendateien von nginx

ich eine Website mit django geschaffen hatte, war das Servieren von Mediendateien im Admin richtig hochgeladen (wie ich glaubte, es war), weil sie erschienen die jeweilige Seite wurde einmal hochgeladen. Nach einigen neuen Standortkorrekturen wurden diese Dateien jedoch nicht mehr angezeigt, und die Bilder und Audiodateien wurden nicht angezeigt.

Um meine Website zu hosten, verwende ich Digital Ocean.

Wenn ich MEDIA_URL auf "/ media /" setze, wird es immer der STATIC-URL vorangestellt, und die URL würde wie "www.site.com/media/static/Images/etc" aussehen, und dann funktioniert nichts . richtig

In meinen Modellen, für die Imagefield() ich habe upload_to eingestellt als

photo = models.ImageField(upload_to="photos/") 

mY urls.py:

urlpatterns = [ 
    url(r'^' + ADMIN + '/', admin.site.urls), 
    url(r'^', include('a.urls')), 
    url(r'^', include('b.urls')), 
    url(r'^', include('c.urls')), 
    #for static files 
] #+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Dies schafft ein Ordner in meinem Medienordner, der sich im Stammverzeichnis meiner Django-App befindet.

Ich lese in der Dokumentation, aber ich bin immer noch unklar, wie Dinge zu tun, wenn es darum geht, meine Mediendateien zu liefern, wenn es hochgeladen wird. Ich weiß, dass es der richtige Weg ist, sie mit einem Server wie nginx zu bedienen.

Ich würde gerne wissen, warum meine Mediendateien nicht ursprünglich angezeigt, und wenn ich nginx verwenden soll die Tatsache, dass die Dateien im Medienordner nicht gefunden werden, wird es beeinflussen, wie nginx die Dateien anzeigt und Warum wird die Medien-URL vorangestellt?

Ich werde die Nginx-Konfiguration tun, aber wenn Sie ein Beispiel zeigen möchten, tun Sie es bitte.

DANKE!

Mein jeweiliger URLS in Settings.py

STATIC_URL = '/static/' 
STATIC_ROOT = '/home/path/to/project/static' 
MEDIA_URL = '/' 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 

Antwort

0

ich herausgefunden, wie meine Dateien erhalten auf meiner Produktion Website anzuzeigen, aber es beteiligte um eine wenig Arbeit. Da ich wusste, dass Dateien, die sich bereits im statischen Ordner befanden, gesammelt und angezeigt wurden, musste ich lediglich die Benutzerdateien in den statischen Ordner stellen.

Also tat ich dies:

STATICFILES_DIRS = (
    #os.path.join(PROJECT_ROOT), 
    'media', 
) 

Nun collectstatic geht in den Ordner und ruft die Mediendateien, die hochgeladen wurden. Das einzige Problem ist, dass ich jedes Mal, wenn ich eine Datei hochlade, Collectstatic ausführen muss, daher ist dies eine vorübergehende Lösung. Wenn Sie wissen, wie Sie den Collectstatic-Lauf jedes Mal, wenn eine Datei hochgeladen wird, automatisch ausführen, kommentieren Sie bitte unten.

Ich dachte nur, ich würde dies teilen, nur für den Fall, dass jemand das gleiche Problem hatte und wollte eine temporäre Lösung.

+0

Das ist falsch. Verwechseln Sie statische Dateien nicht mit Mediendateien. Statische Dateien sind Teil Ihres Programms, wie Ihre CSS, Javascript und alle Bilder, die Teil Ihres Programms sind. Mediendateien sind Daten, die von Benutzern hochgeladen werden. Für statische Dateien siehe https: // djangodeployment.com/2016/11/21/how-django-statische-files-work-in-production /. Mediendateien sollten in ein anderes Verzeichnis verschoben werden (und für Sammeldateien gibt es keine "Sammelstatistik"). –

+0

@AntonisChristofides konnte die Mediendateien durch Sammeln der Dateien im Medienordner sammeln. Kennst du Tutorials, die mir zeigen, wie ich das richtig mache? Ich bin nur wirklich verwirrt, und ich kann wirklich nicht aufhören, daran zu arbeiten, bis ich es herausgefunden habe. Die Django-Dokumentation zum Bereitstellen von statischen Dateien erwähnt nicht den Umgang mit Mediendateien. – thatguy

+0

"war in der Lage, die Mediendateien durch Sammeln der Dateien zu sammeln" macht wenig Sinn. Sie müssen genau erklären, was Sie tun. Verwenden Sie besser ein Beispiel für eine einzelne Datei. Welche Datei ist es, zu welchem ​​Modell passt es, in welches Verzeichnis hast du es geschrieben, wie hast du es dort hingestellt und das Problem hast du? –

Verwandte Themen