2017-03-03 87 views
0

正確顯示在我的項目,我必須把我的媒體文件夾裏是這樣的:Django的圖像(媒體)路徑不模板

settings.py

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

urls.py

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

然後在我的models.py我創建一個這樣的類:

class PD_Pictures(models.Model): 
    pic_IDmod = models.ForeignKey(PD_Models, related_name='modello') 
    pic_image = models.ImageField() 
    pic_descr = models.CharField(max_length=50) 

def __str__(self): 
    return self.pic_descr 

在這一點上我的功能views.py我提取數據庫相關的所有值PD_Picture

prod_img = PD_Pictures.objects.all() 
..... 
return render(
    request, 
    'base_catalog.html', 
    { 
     'bike_mod': bike_models, 
     'prod_img': prod_img, 
     'cat_list': cat_list, 
     'menu_list': menu_list['menu'], 
     'pcontent': menu_list['cont'], 
     'form': c_form 
    }, 
    context 
) 

,並在我的模板,我會TI顯示相關圖片:

{% for pic in prod_img %} 
    <div class="4u"> 
     <span class="image fit" 
      <img src="{{ pic.pic_image }}" alt="" /> 
     </span> 
    </div> 
{% endfor %} 

那麼,在這點,當我插入一個新的圖像分貝,表中的路徑是newimage.jpg,身體上在我的服務器上圖像存儲在/media/newimage.jpg,我如何從表中提取值並連接到我的模板中的媒體路徑? (<server>/media/newimage.jpg

我試圖在我的ImageField中使用upload_to='/models/',但唯一的影響是將圖像保存到另一個模型文件夾到主模型中。

+2

'pic.pic_image.url'將是媒體網址 – itzMEonTV

回答

0

你可以把它做成你的模板,看看給出了什麼路徑?

{% for pic in prod_img %} 
    <p>{{ pic.pic_image }</p> 
{% endfor %} 
+0

嗨,它返回'pin1.jpg',但phisically在127.0。 0.1:8000/media/pic1.jpg –

2

只是嘗試這樣

{% for pic in prod_img %} <img src="{{ pic.pic_image.url }}" alt="" /> {% endfor %}

+0

爲了解決這個問題,一些詞語或評論會使它更好的回答 – planetmaker

+0

,因爲{%pic.pic_image.url%}會返回圖片的url和'src'屬性需要url圖片 – UserGraund

+0

嗨,pic.pic_image和pic.pic_image.ur l返回相同路徑'pic1.jpg'而不是media/pic1.jpg –

0

從Django的官方文檔:

FieldFile.url 只讀屬性通過調用URL來訪問文件的相對URL ()方法的底層存儲類。

如果你試圖在你的模板打印{{pic.pic_image}}您會收到該數據庫字段值,而與{{pic.pic_image.url}}的網址()從django.core方法.files.storage.Storage會打電話,你的基地設置 似乎是正確的