Django关于图片存储和读取问题

一般情况下,我们上传的图片会保存在 media 这个文件夹下面,在访问网页的时候我们就会读取其中的照片。今天就是来做这样一个例子:


1,在项目的目录下,新建media目录文件,配置setting.py

# 设置上传文件的路径
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')   #指定根目录

2,在model中配置上传的属性

image = model.ImageField("logo", upload_to='org/%Y/%m',max_length=100)
# 提示, 这里的意思是定义一个上传图片的属性,将文件的内容上传到org/%Y/%m 这个文件件下面,最大的文件名长度是100,%Y是当前的年份创建文件夹,%m是当前的月份创建文件夹

在后台打开就是这样的效果,所以还是建议将logo改成中文的标识符
Django关于图片存储和读取问题

3当前这只是前奏,还有以一系列步骤需要完成,接下来到setting.py 继续进行配置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                # 添加这一行,可以理解为中间件的意思
                'django.template.context_processors.media',
            ],
        },
    },
]

还没有完哟,有人肯定想,真麻烦,还有最后一步 url.py里面配置

      # 处理图片显示的url,使用Django自带serve,传入参数告诉它去哪个路径找,我们有配置好的路径MEDIAROOT
      re_path(r'^media/(?P<path>.*)', serve, {"document_root": MEDIA_ROOT}),