2012-05-27 52 views
6

我是新來的django,我一直在玩上傳圖片,然後顯示它們。 ... 嘗試來顯示它們。來自媒體文件的圖像不會顯示在django模板

每當我嘗試從模板中顯示圖像,我只是得到了破碎的圖像鏈接圖標。

我使用的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) 

現在我剛剛用管理員上傳圖片。這似乎很好地工作,他們去的地方,我希望

但是當我嘗試將它們顯示:
模板

<!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> 

我得到的每一個破碎的圖標。
瀏覽器的源代碼顯示了我:

<!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> 

是有道理的,我只有一張照片上傳。
如果我複製的硬盤鏈接之一,放入一些其他的HTML文件...它的工作原理

回答

11

哦FFS ....

aperently它

MEDIA_URL = '/media/' 

不是

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

...儘管#'http://127.0.0.1:8000/media/'被寫入它旁邊

工作IMG鏈接看起來像這樣:

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

你絕對需要的:

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

在URL文件還

0

如果你是在開發環境中尋找顯示圖像試試這個:

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視圖文件*。html的:

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

這意味着我們在靜態文件夾中有一個img文件夾。你的情況,你可以通過

,如果你看到你的瀏覽器的HTML必須看到這樣的改變是:

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

哎爲感謝您響應。我試過了,但它似乎仍然沒有工作 – Ben

相關問題