Django 不想显示媒体文件

Django doesn't want to show media files

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

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

如何解决这个问题?此页面位于 App called store,urls.py 和 settings.py 在 main app

您通过.url attribute [Django-doc]获得url:

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

请注意,在生产环境中(例如 DEBUG = False),Django 提供文件服务。在这种情况下,您将需要配置 nginx、apache 等。有关详细信息,请参阅 Static file development view section of the documentation.

我们应该强烈使用 ORM 并查询 django 模型,django 不能像 ImageField 那样处理来自数据库的字符串。