一, 没有配置 Media
avatar = models.FileField(upload_to='avatars/', default='/avatars/default.png') # 储存头像的 models 代码
Django 实现:
django 会将文件对象下载到项目的根目录中 avatars 文件夹中 (如果没有 avatars 文件夹, Django 会自动创建)
default 的意思是是如果该用户没有头像, 会默认去找 avatars 下的 default.PNG
二, Media 配置
首先 django 有两种静态文件:
/static/ : JS , CSS ,img
/media/ : 用户上传文件
配置 Media
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
获取用户上传头像
- avatar_obj = request.FILES.get('avatar')
- user_obj = UserInfo.objects.create_user(
- username=user,
- password=pwd,
- email=email,
- avatar=avatar_obj,
- )
配置 Media 后的 django 实现:
会将文件对象下载到 MEDIA_ROOT 中 avatars 文件夹中 (如果没有 avatars 文件夹, Django 会自动创建),user_obj 的 avatar 存的是文件路径.
三, Media 配置之 MEDIA_URL
配置 MEDIA_URL 是为了让客户端直接访问 Media 中的数据, 类似于 STATIC_URL
settings.py
MEDIA_URL = '/media/'
urls.py
- from django.urls import path, re_path
- from django.views.static import serve
- from cnblog import settings
- urlpatterns = [
- # media 配置
- re_path(r'media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}) # 主要以 media 开头, 后面写什么都行
- ]
来源: http://www.bubuko.com/infodetail-2956099.html