Django3.0 ImageField 文件/图片上传配置

按以下步骤操作即可:

1. 配置 settings.py(项目同名目录下)

MEDIA_ROOT = 'media'
MEDIA_URL = '/media/'

注意MEDIA_ROOT不要写成'/media/',因为这样会导致上传的文件被存到服务器的根目录。原则上,还是存到项目目录下吧。

2. 配置 models.py (app下)

在需要 ImageField 的 model 里添加一个字段。

avatar = models.ImageField(upload_to='avatars')

这里 upload_to 表示上传的目录,对于本例,上传后的目录就是:项目根目录/media/avatars
也可以用一个 callable 作为参数:

def user_directory_path(instance, filename):
    # 文件储存路径 MEDIA_ROOT/user_/
    return '{0}/{1}'.format(instance.user.id, filename)

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    avatar = models.ImageField(upload_to=user_directory_path)

3. 配置 urls.py(项目同名目录下)

由于需要对这些上传的文件进行访问,因此需要配置一个url(加号后面的内容):

from django.conf.urls import url, include
from django.contrib import admin
from django.conf.urls.static import static
from . import settings

urlpatterns = [
    url(r'', include('core.urls')),
    url(r'admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

以上几步完成后,你上传文件后,在 templates 中就可以使用:{{ user.profile.avatar.url }}来进行访问了。

你可能感兴趣的:(Django3.0 ImageField 文件/图片上传配置)