2013-02-03 11 views
5

Po prostu chcę wyświetlić obraz, który przesłałem przez moduł administracyjny, poprzez znacznik obrazu HTML na stronie internetowej. Obrazek znajduje się w /home/user/work/djcode/media/chicks/blondie.jpg.Wyświetl obraz znajdujący się w bazie danych w Django

Oto odpowiednia część mojego models.py

class Image(models.Model): 
    model_name = models.CharField(max_length=50) 
    model_pic = models.ImageField(upload_to='chicks/') 
def __unicode__(self): 
    return self.model_name 

Tutaj jest odpowiednia część mojego views.py

def main(request): 
    i = get_object_or_404(Image, pk=1) 
    return render_to_response('polls/main.html', {'image': i}, context_instance=RequestContext(request)) 

tag HTML, który używam jest po prostu

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

Z pliku settings.py mój główny katalog multimediów to MEDIA_ROOT = '/ home/user/work/djcode/media'

Należy zauważyć, że zmienna {{image.model_pic.url}} pokazuje "pisklęta/blondie.jpg" przez szablon html, więc myślę, że mój obiekt obrazu jest rzeczywiście dobrze wysłany do szablonu.

Ktoś mógłby mi z tym pomóc? To byłoby naprawdę pomocne.

Wielkie dzięki za poświęcony czas!

Odpowiedz

1

Musisz użyć {{MEDIA_URL}} lub {{STATIC_URL}}, wybór zależy od sposobu zarządzania plikami na serwerze.

5

Używanie funkcji adresu URL w polu obrazu w szablonie nie jest poprawne - problem powinien rozwiązać {{ image.model_pic.url }}. Musisz po prostu upuścić bit {{ MEDIA_URL }}.

HTML powinien być -

<img src="{{ image.model_pic.url }}"> 

Zapraszamy do obejrzenia dokumentacji dotyczącej using files in models.

Jeśli nadal masz problemy, może to być problem z serving static files. Obsługa plików statycznych w django zależy od tego, czy robisz to podczas produkcji, czy po prostu za pomocą polecenia python manage.py runserver.

do plików multimedialnych serwerów w trakcie rozwoju (z python manage.py runserver), upewnij się, że masz swój MEDIA_URL i MEDIA_ROOT prawidłowe w settings.py następnie można dodać następujące do adresu URL conf -

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

urlpatterns = patterns('', 
    # ... the rest of your URLconf goes here ... 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Zajrzyj do instrukcji docs, aby uzyskać instrukcje dotyczące wyświetlania plików w produkcji.

Powiązane problemy