使用管理员上传的图片

时间:2015-04-21 18:03:53

标签: django django-templates django-staticfiles django-media

在管理页面中,我将一些图像添加到模型Product。在我的settings.py文件中,我写了这个:

MEDIA_ROOT = os.path.abspath('media')
MEDIA_URL = '/media/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    ('static', os.path.abspath('static')),
)

上传的图片放在文件夹media中。我想显示这些图像并在模板中写下:<img src='{{ brand.product_image.url }}' alt=""/>并在模板中写入{% load staticfiles %},但不显示图像。 那有什么问题呢? 还有一个问题:存储由admin上传的图像的更好方法是:在media文件夹或static文件夹中? 我可以将图像存储在app文件夹中,我在哪里使用它们?

我的Brand型号:

class Brand(models.Model):
    name = models.CharField(max_length=100, unique=True)
    description = models.CharField(max_length=1000)
    product_image = models.ImageField()
    def __unicode__(self):
        return self.name

我的template代码:

<div class="tab-pane  active" id="blockView">
        <ul class="thumbnails">
            {% for brand in brands %}
                <a href="{% url 'brand' brand_id=brand.id %}">
                <li class="span3">
                    <div class="thumbnail">
                    <img src='{{ brand.product_image.url }}' alt=""/>
                    <div class="caption">
                      <h5>{{ brand.name }}</h5>
                    </div>
                  </div>
                </li>
                </a>
            {% endfor %}
          </ul>
    <hr class="soft"/>
    </div>

1 个答案:

答案 0 :(得分:0)

静态和媒体文件有不同的用途。对于上传的文件,您应该使用媒体文件。 静态文件是包含在静态模板中的图像,JavaScript或CSS文件。因此,如果某些图像是模板的一部分,则默认将它们存储在static文件夹中。

关于未显示的图片: 请提供更多信息。发布你的模特。

更新 - 在开发服务器上提供媒体和静态。

更新您的urls.py

from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.conf import settings


from django.contrib import admin
admin.autodiscover()


urlpatterns = patterns(
    '',

)  + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT, show_indexes=True) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT, show_indexes=True)