2017-03-03 86 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会打电话,你的基地设置 似乎是正确的