首页 > 解决方案 > Django 不想显示媒体文件

问题描述

我正在尝试输出我这样保存的图像:

product_image = models.ImageField(blank = True, upload_to='images')

我的seetings.py 看起来像:

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

这里还有 urls.py:

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^$', include('store.urls')),
    url(r'^', include('store.urls')),

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

查询就像 ORM 的简单实现,但我也在 ORM 上尝试过

def index(request):
products = DAO.get_all_products()
return render(request, 'store/index.html', locals())

HTML:

<img src="{{product.product_image}}" class="img-responsive watch-right" alt=""/>

而且它不起作用,我看不到任何图像,并且 {{product.product_image}} 在浏览器中向我显示 images/pic13.jpg。但我可以在 /admin 错误中看到此图像:

Not Found: /images/pic13.jpg

如何解决这个问题?此页面位于应用名为 store,urls.py 和 settings.py 在主应用中

标签: pythondjangomedia

解决方案


.url您通过属性 [Django-doc]获取 url :

<img src="{{ product.product_image.url }}" class="img-responsive watch-right" alt=""/>

请注意,在生产中(DEBUG = False例如),Django 不提供文件。在这种情况下,您将需要配置 nginx、apache 等。有关更多信息,请参阅文档的静态文件开发视图部分


推荐阅读