Django开发 显示Model中的图片

字数 166阅读 261
  1. 设置settings.py文件中的MEDIA_ROOT和MEDIA_URL属性

MEDIA_ROOT 用于保存用户上载文件的目录的绝对文件系统路径。
MEDIA_URL 处理从中提供的媒体的URL MEDIA_ROOT,用于管理存储的文件。如果设置为非空值,则必须以斜杠结尾。

MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
MEDIA_URL = '/media/'
  1. 设置ImageField属性
class Goods(models.Model):
    icon = models.ImageField(verbose_name='商品封面',upload_to='goods_icon/', null=True, blank=True)

upload_to是路径,图片的真实路径为:host+settings.py文件的MEDIA_ROOT路径+upload_to+图片名。

  1. 给前端返回图片的URL
def json(self):
        return {
            'icon': self.icon.url if self.icon else ''
        }

这里不能直接返回icon.url, 因为当icon为空时,就会报错了。做一个空值判断。

  1. 加载图片路径到服务器URL中
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

推荐阅读更多精彩内容