栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

django使用media 上传和修改头像

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

django使用media 上传和修改头像

先说如何添加用户时上传头像   我这里上传文件用的是element-ui里的upload组件

1,首先在用户表设置头像字段
class User(models.Model):
    '''用户表'''
    email=models.CharField(max_length=255,unique=True)
    password=models.CharField(max_length=255)
    intorduction=models.CharField('个人简介',max_length=255,null=True)
    phone=models.CharField('手机号',max_length=255,null=True)
    #加上head_img这个字段用来保存头像
    head_img=models.FileField('头像',null=True,max_length=255)
    role_id=models.ManyToManyField(Role)
2,Media配置

在settings粘上以下代码

配置MEDIA_ROOT是为了自动生成文件

配置MEDIA_URL是为了让客户端直接访问Media中的数据,类似于STATIC_URL

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
3,在一级路由urls.py下粘re_path这一段 并导入对应模块即可
from django.contrib import admin

from django.urls import path, re_path,include
from django.views.static import serve
from django_mianshibaodian import settings
urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('RBACapp.urls')),
    # 主要以media开头,后面写什么都行
    re_path(r'media/(?P.*)$', serve, {'document_root': settings.MEDIA_ROOT})  
]
4,然后你直接用orm的create方法他就会自动生成图片

例:这里的head_img就是你传的图片 其他写你对应的数据即可

class putHeadImg(View):
     def post(self,res):
        file = res.FILES.get("file")
        User.objects.create(email='email',head_img=file,password=123)
        return JsonResponse({'message':'修改头像!'}) 

 我们就可以直接通过ip+media+图片name即可 

 

例:

这里说修改文件 发现这个生成文件只能在create方法才能生成修改的话就不会自动生成图片了,所以我就用了open方法去写入图片

这里我遇到了一个问题 upload传过来的数据不只是图片的二进制还有文件名一些别的东西处理的话没有想到好的方法

然后我竟然发现file = res.FILES.get("file") 这个不只是文件名!!!!!

我们可以用file.file.read()可以获取对应的图片的二进制我们直接保存就行

class putHeadImg(View):
     def post(self,res):
        file = res.FILES.get("file")
        f=open('./media/'+username+'.jpg','wb+')
        f.write(file.file.read())
        f.close()
        return JsonResponse({'message':'修改头像!'}) 

我用的用户名存储的图片修改完之后会被替换掉  OK到这里就结束了!!希望对大家有帮助!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982523.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号