2017-11-05 3 views
0

Ich versuche, ein von Nutzern hochgeladenes Bild in meiner HTML-Vorlage anzuzeigen. Ich habe eine Reihe von Template-Tags ausprobiert, aber keine davon scheint zu funktionieren. Alle Einstellungen scheinen korrekt konfiguriert zu sein. Benutzerhochgeladenen Bilder werden korrekt hochgeladen project_name/media/Bilder, die nicht mit Vorlagen-Tags in Django-Vorlagen angezeigt werden

settings.py

MEDIA_URL = '/media/' 
MEDIA_ROOT = 'project_name' 


# Are the STATIC settings affecting the media settings? media is for user uploads so I don't think so? 

STATICFILES_DIRS = [ 
    'project_name/static/', 
] 

STATIC_URL = '/static/' 

Dinge, die ich in diesem HTML versucht:

# 'app.profileapp' is not the issue here. I can access other 'profileapp' attributes just fine (e.g. 'app.profileapp.agent_website' shows up just fine) 
<img src = "{{ app.profileapp.agent_picture }}" alt='My image' /> 
<img src = "{{MEDIA_URL}}{{ app.profileapp.agent_picture }}" alt='My image' /> 
<img src = "{{MEDIA_ROOT}}{{ app.profileapp.agent_picture }}" alt='My image' /> 
<img src = "{{ app.profileapp.agent_picture.url }}" alt='My image' /> 
<img src = "project_folder/{{ agent.agentpremiuminfo.agent_picture }}" alt='My image' /> 
<img src = "project_folder/media/{{ agent.agentpremiuminfo.agent_picture }}" alt='My image' /> 
+0

Verwenden Sie '.url' wie folgt: 'My image'. Sie können das Problem eingrenzen, indem Sie den HTML-Code "" in Ihrem Browser überprüfen. Rechtsklick -> "Element prüfen". Überprüfen Sie das Attribut für 'src' der Wert sollte etwas wie'/media/123/..... jpg' sein – hansTheFranz

+0

@hansTheFranz Der Inspektions-Tipp ist sehr hilfreich. Ich habe mit den Tags experimentiert und versucht, verschiedene URLs wie 'project_name/media/photo.jpg',' media/photo.jpg' und sogar den ganzen Weg von 'C: /.../../ project_name/media zu landen/photo.jpg', aber es wird immer noch der alt text angezeigt?!? – Valachio

+0

Ich habe gerade versucht, es mit '../../ media/image.jpg' zu codieren, aber es zeigt immer noch den alternativen Text an. – Valachio

Antwort

0

Angenommen, wir haben ein Modell Posts mit einem ImageField Feld namens image. Jetzt in der Vorlage (die den Zugang zu einigen Post Instanzen hat) können Sie ein Bild mit folgenden Anzeige:

<img src="{{ post.image.url }}"/> 

wo post eine Instanz von Post ist.

Ich bin sicher, dass dies funktionieren sollte; Ich benutze es auf meiner Website; hier ist meine MEDIA_ROOT und MEDIA_URL Konfigurationen:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 

MEDIA_URL = '/media/' 

Wichtig: Beachten Sie folgendes in Ihrer urls.py Datei enthalten sein:

urlpatterns = [ 
    # your urls go here 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Dies dient Nutzern hochgeladen wurden Mediendateien während der Entwicklung. Weitere Informationen finden Sie unter here.

+0

Stellt sich heraus das '+ statische (...)' war das Problem. Ich habe es in meine urls.py hinzugefügt, aber der Link, in dem ich mich gerade befinde, befindet sich in einer anderen App, und urls.py dieser App hatte das hinzugefügte static() nicht. Hinzugefügt und jetzt funktioniert es gut. Vielen Dank. – Valachio

0

das ist meine Einstellungen:

MEDIA_ROOT = os.path.join(BASE_DIR,"upload") 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash. 
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/" 
MEDIA_URL = '/upload/' 

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR,"static") 

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    os.path.join(BASE_DIR,"assets"), 
    os.path.join(BASE_DIR,"static"), 
) 

<a href="/static/path/1.jpg"></a> 
Verwandte Themen