2014-07-11 11 views
6

Das ist mein models.py:Django - Hochladen statisches Bild als Standard-Datei Imagefield

def get_profileImage_file_path(instance, filename): 
    return os.path.join('%s/uploadedPhotos/profileImages' % instance.user_id, filename) 

class UserExtended(models.Model): 
    user = models.OneToOneField(User) 
    profileImage = models.ImageField(upload_to=get_profileImage_file_path, default='/static/images/myProfileIcon.png') 

Nun, ich das Standard-Image will (was in meinem statischen Ordner) auf dem Weg in den

gegeben sparen
get_profileImage_file_path 

Funktion. In meinem settings.py habe ich definiert MEDIA_ROOT und MEDIA_URL als:

MEDIA_ROOT = '/home/username/Documents/aSa/userPhotos' 

MEDIA_URL = '/media/' 

Aus irgendeinem Grund, wenn ich das Benutzerobjekt in der Vorlage und in der Vorlage passieren, wenn ich es tue:

<img class='profilePic' src="{{ user.userextended.profileImage.url }}" height='120px' alt="" /> 

kein Bild erscheint und wenn ich den ‚Inspect Element‘ Abschnitt in Chrom öffne, gibt es einen 404-Fehler Spruch:

GET http://127.0.0.1:8000/home/username/Documents/djcode/aS/aSa/static/images/myProfileIcon.png 404 (NOT FOUND) 

obwohl, dass der richtige Dateipfad zu dem Bild ist. (Ich bin mir auch nicht sicher, warum es den gesamten Dateipfad gibt, soll es nicht nur von/static/anfangen? Auch wenn ich 'Quelle' ansehe, ist die gesamte URL da.) Wie mache ich das so? Das Standardbild, das sich im statischen Ordner befindet, wird in den Pfad hoch geladen, der in der Funktion - zur Verfügung gestellt wird?

+0

Haben Sie diese Arbeit ausgeführt? – awidgery

Antwort

2

Im Allgemeinen verwenden wir die Config wie für Medien folgt:

BASE_DIR = dirname(dirname(abspath(__file__))) 

MEDIA_ROOT_DIR = 'media' 
MEDIA_ROOT = normpath(join(BASE_DIR, MEDIA_ROOT_DIR)) 
MEDIA_URL = '/media/' 

Für die Entwicklung Zwecken:

DEBUG = True 

Und in urls.py Folgendes hinzu:

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

if settings.DEBUG: 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

Laden Sie das Bild erneut hoch und validieren Sie das Bild, es sollte jetzt funktionieren.

Verwandte Themen