2014-11-22 78 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