Ich versuche, meine Django-App auf Heroku bereitzustellen. Alle statischen Dateien werden von whitenoise
bereitgestellt und erfolgreich migriert. Aber wie bekomme ich meine Mediendateien, die mit ImageField
hochgeladen werden, während der Produktion anzuzeigen.Serving Media-Dateien während der Bereitstellung in Django 1.8
mein settings.py
STATIC_URL = '/static/'
STATIC_ROOT = 'C:/Users/Sak/mpro/feat/static/'
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mpro.settings")
application = get_wsgi_application()
try:
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
from dj_static import Cling
application = Cling(get_wsgi_application())
except:
pass
urls.py
urlpatterns = [
url(r'^', include('feat.urls', namespace="feat")),
url(r'^admin/', include(admin.site.urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Alle meine Mediendateien base_dir/media/media
hochgeladen werden und wenn whitenoise
statische Dateien speichert es sammelt nur Dateien an STATIC_ROOT
, wie bekomme ich meine Mediendateien bereitgestellt. Wenn ich rufe heroku run ls
kann ich den Ordner Medien sehen.
Nun, Dateien in Medien sollen Laufzeitdaten sein, die mit den Daten in der Datenbank verknüpft sind, so dass sie nicht kopiert werden, genauso wie sie Daten nicht aus der Datenbank kopieren. Ich nehme an, Sie könnten Fixtures verwenden, wenn Sie einige Anfangsdaten benötigen. Sonst bist du ziemlich alleine, glaube ich. – spectras
Ich verstehe, dass sie nicht auf die gleiche Weise wie statische Dateien kopiert werden, aber es muss eine Möglichkeit geben, Medienbilder hinzuzufügen. Kann auch nach der Produktion sein, wenn ich neue Bilder in meinem Admin hinzufügen möchte, muss es eine Möglichkeit geben, es irgendwo zu speichern, so dass sie auch kopiert werden. Kann im statischen Dateiordner sein, wo sie mit statischen Dateien – WutWut
Sie kopiert werden Sie können sie entweder hochladen, was dazu führt, dass Django sie dorthin legt, oder Sie können Dateien manuell kopieren und "instance.image.path" zuweisen, um sie direkt in einem Skript anzuzeigen. Pfad sollte relativ zu 'MEDIA_ROOT' sein. – spectras