2014-11-22 54 views
1

模型看起來像Django的MEDIA_ROOT和MEDIA_URL TEMPLATES

class Cars(models.Model): 
    name = models.CharFidle(max_length=255) 
    price = models.DecimalField(max_digits=5,decimal_places=2) 
    photo = models.ImageField(upload_to='images/cars') 
    def __unicode__(self): 
     return self.name 

設置

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

,但是當我用它在模板中像這樣

{% for car in cars %} 
     <li>{{ car.name }}</li> 
     <li>{{ car.price }}</li> 
     <a>{{ car.photo }}</a> 
     <img src="{{ car.photo.url }}"/> 
    {% endfor %} 

我不能得到圖像,這是怎麼回事?

這將是美好的人幫我

+1

如果您檢查生成的HTML中的元素,圖像的SRC屬性內部放置了什麼? – 2014-11-22 07:26:18

+0

你有網址嗎? – 2014-11-22 09:03:20

+0

http://127.0.0.1:8000/media/images/cars/38898.jpg看起來像這樣,但[22/Nov/2014 20:29:44]「GET /media/images/cars/38898.jpg HTTP /1.1「404 2191 – bricks 2014-11-22 12:30:08

回答

2

有可能被這裏發生的幾件事情:

  1. 您正在運行尚未安裝到非開發網絡服務器服務靜態媒體。這裏的解決方案取決於您正在運行的Web服務器。
  2. 您正在運行開發Web服務器並且尚未安裝static serving。對於這一點,我會添加以下到您的根urls.py文件:
urlpatterns = [ 
     # ... the rest of your URLconf goes here ... 
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
  • 有你MEDIA_ROOT目錄權限問題。在這種情況下,我會確保你的MEDIA_ROOT目錄可以被你的Web服務器讀取。
  • +0

    謝謝,我會試試看,謝了 – bricks 2014-11-22 08:05:21

    +0

    恐怕還是不行。這使我〜 – bricks 2014-11-22 08:23:27

    +0

    那麼怎麼樣:urlpatterns = [...] +靜態(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT) – abeaamase 2014-11-22 08:30:34

    1

    從你的settings.py我假設你已經在你的基礎目錄中創建了一個媒體文件夾。如果你有,那麼你是正確的。我假設問題出現在您的模板中。

    試試這個:

    <img src="/static/{{car.photo}}" width="100" height="100" /> 
    

    不要忘了,包括{% load staticfiles %}在模板的頂部延伸的基礎後。你準備好去...

    +0

    我在urls.py中犯了一個錯誤,謝謝你一樣 – bricks 2014-11-23 06:56:48

    +0

    如果我的回答幫了你,然後接受答案.... – gamer 2014-11-23 13:03:47

    +0

    對不起,我的repution是不夠的〜 – bricks 2014-12-02 14:29:33

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

    加入到我的根urls.py,並記住在根urls.py