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