2012-05-27 14 views
6

Jestem nowy dla django i bawiłem się przesyłaniem zdjęć, a następnie ich wyświetlaniem. ... dobrze próbuje, aby je wyświetlić.obrazy z pliku multimedialnego nie będą wyświetlane w szablonie django

Zawsze, gdy próbuję wyświetlić obraz z szablonu, po prostu pojawia się ikona linku uszkodzonego obrazu.

Używam serwera sqlite3

settings.py

ROOT_DIR = os.path.dirname(os.path.dirname(__file__)) 
def location(f): 
    return os.path.join(ROOT_DIR, f) 
MEDIA_URL = 'http://127.0.0.1:8000/media/' 
MEDIA_ROOT = location('media/') 

models.py

class Image(models.Model): 
    image = models.ImageField(upload_to = 'images/') 

views.py

from imageupload.settings import MEDIA_ROOT, MEDIA_URL 

def main(request): 
    imgs = Image.objects.all() 
    return render_to_response('index.html', {'images': imgs, 'media_root': MEDIA_ROOT, 'media_url': MEDIA_URL}) 

url.py

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

W tej chwili właśnie użyłem administratora, aby przesłać obrazy. I to wydaje się działać prawidłowo, idą tam, gdzie spodziewam

Ale gdy próbuję je wyświetlić:
szablon

<!DOCTYPE html> 
<html> 
    <img src="<correct path to project>/media/images/photo_1.JPG" /> 

    {% for img in images %} 
    <img src="{{ media_root }}{{ img.image.name }}" /> 
    <img src="{{ media_url }}{{ img.image.name }}" /> 
    <img src="{{ img.image.url }}" /> 
    {% endfor %} 
</html> 

mam złamaną ikonę dla każdego z nich.
Kod źródłowy przeglądarka pokazuje mi:

<!DOCTYPE html> 
<html> 
    <img src="<correct path to project>/media/images/photo_1.JPG" />  
    <img src="<correct path to project>/media/images/photo_1.JPG" />  
    <img src="http://127.0.0.1:8000/media/images/photo_1.JPG" /> 
    <img src="http://127.0.0.1:8000/media/images/photo_1.JPG" /> 
</html> 

to ma sens, mam tylko jedno zdjęcie przesłane.
i gdybym skopiować jeden z twardych linków i umieścić go w innym pliku html ... to działa

Odpowiedz

11

Oh FFS ....

aperently to

MEDIA_URL = '/media/' 

NOT

MEDIA_URL = 'http://127.0.0.1:8000/media/' 

...mimo #'http://127.0.0.1:8000/media/' napisane jest tuż obok niego

działający link img wygląda tak:

<img src="/media/images/photo_1.JPG" /> 

pewno potrzebujemy:

static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

w pliku url także

0

jeśli szukasz wyświetlania obrazów w środowisku programistycznym spróbować tego:

settings.py

SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) 
MEDIA_ROOT = os.path.join(SITE_ROOT, 'static') 
MEDIA_URL = '/static/' 
STATIC_ROOT = os.path.join(SITE_ROOT, 'statics') 
STATIC_URL = '/statics/' 

urls.py

# somebody import this from settings 
SITE_ROOT = os.path.realpath(os.path.dirname(__file__)) 
urlpatterns += patterns('', 
    url(r'^static/(?P<path>.*)$','django.views.static.serve', 
     {'document_root': os.path.join(SITE_ROOT, 'static')}) 
) 

html widok plik * .html:

<img src="{{ MEDIA_URL }}img/content_top_edit_form.png"> 

oznacza to, że mamy folder statyczny w folderze img. w twoim przypadku można to zmienić przez

jeśli widzisz swoją html przeglądarka musi być postrzegane w ten sposób:

<img src="/static/img/content_top_edit_form.png"> 
+0

hey dzięki za swoje odpowiedź. Próbowałem i nadal nie działa – Ben

Powiązane problemy