使用管理员上传的图片

Posted

技术标签:

【中文标题】使用管理员上传的图片【英文标题】:Using admin uploaded images 【发布时间】:2015-06-29 01:35:50 【问题描述】:

在管理页面中,我将一些图像添加到模型 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 %,但图像不显示。 那有什么问题呢? 还有一个问题:存储管理员上传的图像的更好方法是:在media 文件夹或static 文件夹中? 我可以将图像存储在我使用它们的应用文件夹中吗?

我的Brandmodel:

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 ' />
                    <div class="caption">
                      <h5> brand.name </h5>
                    </div>
                  </div>
                </li>
                </a>
            % endfor %
          </ul>
    <hr class="soft"/>
    </div>

【问题讨论】:

模型看起来不错。可能是您的模板有误?当您在管理界面上传文件时,在 MEDIA_ROOT 文件夹中创建了新文件吗? 是的,在“media”文件夹中创建了新文件。我在我的问题中描述了我在模板中所做的一切。看起来不错 请发模板代码 嗯,看起来不错。您的模板在图像 src 中生成一些代码?你是通过 runserver 运行 django 吗? 是的,我正在通过 runserver 运行 django。模板生成: 【参考方案1】:

静态文件和媒体文件有不同的用途。对于上传的文件,您应该使用媒体文件。 静态文件是包含在静态模板中的图像、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)

【讨论】:

更新,将最后一行添加到您的项目 urls.py 非常感谢。但为什么我需要添加该网址?为什么这么复杂? 更多文档docs.djangoproject.com/en/dev/howto/static-files/…。我认为默认情况下,您必须使用 nginx 或其他 http 服务器提供静态和媒体文件。

以上是关于使用管理员上传的图片的主要内容,如果未能解决你的问题,请参考以下文章

图片上传管理器

Wordpress:在管理员选项页面中上传图片

Magento - 无法在管理员中上传产品图片

使用ajax在codeigniter中上传图片

获取图片 url Firebase 存储(管理员)

带有 localStorage 的 jQuery 图片上传器。部分工作。默认图片不显示