问题:
当开启一个项目的时候,通常会遇到文件(图片,音频等)上传的需要,最常见的比如图片的上传,用户头像,后台管理添加图片,而图片的在是数据库中的存储主要是以该文件的相对路径,在django中可以使用media_url很好的管理上传文件。
解决办法:
三步搞定:
1.在setting配置文件中配置路径
#项目中存储上传文件的根目录[暂时配置],注意,uploads目录需要手动创建否则上传文件时报错
MEDIA_ROOT=os.path.join(BASE_DIR,"uploads")
#访问上传文件的url地址前缀
MEDIA_URL ="/media/"
2.配置路由
from django.urls import path,re_path,include
from django.conf import settings
from django.views.static import serve
import xadmin
xadmin.autodiscover()
# version模块自动注册需要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()
urlpatterns = [
path(r'xadmin/', xadmin.site.urls),
re_path(r'media/(?P<path>.*)', serve, {"document_root": settings.MEDIA_ROOT}),
#写其他路径
]
- 在字段参数中添加upload_to属性
class Banner(BaseModel):
"""轮播广告图模型"""
...
# upload_to 设置上传文件的保存子目录
image_url = models.ImageField(upload_to="banner", null=True, blank=True, max_length=255, verbose_name="广告图片")
...
实现效果:
通过xadmin后台添加的图片会在后端保存在uploads/banner,效果如下:
前端的图片地址为:
http://api.luffycity.cn:8000/media/banner/banner1.png