"如果需要在数据库中存储图片或视频类的数据,我们可以配置MEDIA.
下面的示例将以上传一张图片的形式来说明MEDIA的配置及用法.
第一步 settings.py
# media配置MEDIA_URL = 'media/' # 用于指定url路径MEDIA_ROOT = os.path.join(BASE_DIR,"媒体库") # 用于指定上传文件的存储路径
第二步 urls.py
from django.conf.urls import urlfrom django.contrib import adminfrom django.vIEws.static import serve # !from blog097.settings import MEDIA_ROOT # !urlpatterns = [ url(r'^admin/',admin.site.urls),# media路径配置 url(r'media/(?P<path>.*)/$',serve,{'document_root': MEDIA_ROOT}),]
第三步 models.py
from django.db import models# 用于测试MEDIA的表class Test(models.Model): # 该字段将存储上传的图片路径 image = models.ImageFIEld(upload_to="图片/%Y-%m")
第四步 启动Django并访问admin页面,开始上传图片
可见,上传后,我们的项目根目录下生成了"媒体库"文件夹,且数据库中存储的是图片路径.
这样,便可以拿到图片或视频了:
总结补充
视图中相关的用法(项目摘):
# 部分代码如下:def post(self,request): img,user = request.fileS.get('file'),request.user # 判断文件大小是否被允许 if len(img) > MAX_UPLOAD_file_SIZE: return self.set_response_data(f'file size not exceeding {ALLOW_UPLOAD_file_SUFFIX_RE}M',0) # 判断文件后缀是否被允许 suffix = re.findall(ALLOW_UPLOAD_file_SUFFIX_RE,img.name,re.I) # re.I:忽略大小写匹配 # 如果被允许,则存储图片数据 if suffix: img.name = f'{str(uuID.uuID4())}.{suffix[0].lower()}' # 一定要改img.name,下一行的image=img会用到img.name的值 img_obj = models.Articleimg.objects.create(user=user,image=img) return self.set_response_data(f'/{MEDIA_URL}{img_obj.image}') # 否则的: return self.set_response_data('A suffix that is not allowed!',0)"
以上是内存溢出为你收集整理的【Django】MEDIA的配置及用法全部内容,希望文章能够帮你解决【Django】MEDIA的配置及用法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)