一、没有配置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开头,后面写什么都行 ]