您现在的位置是:网站首页>>Python>>Django

django 上传(二)

发布时间:2018-10-26 10:19:58作者:wangjian浏览量:706点赞量:1

    上一篇django的上传图片使用的相当于原生的Python方法,这里我们来学习一下使用pillow 图像处理组件实现图片上传,pillow组件使用需要与数据库进行结合,所有这里需要你可以连接数据库,django连接数据库的方法可参考 django模型

    此方法单文件上传和多文件上传都实用

    一:安装pillow

    pip install pillow

    二:配置models.py

    from django.db import models
    class Img(models.Model):
        img_url = models.ImageField(upload_to='pic') # upload_to指定图片上传的途径,如果不存在则自动创建
        class Meta:
            db_table = 'img'  #配置表名(可以不进行配置,如果不进行配置的话会生成默认表名)

    执行以下命令,更新数据库

    python manage.py makemigrations
    python manage.py migrate

    三:配置setting.py

    MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') # media即为图片上传的根路径
    MEDIA_URL = '/media/' #别名

    四:实现上传upload.py

    from django.views.decorators.csrf import csrf_exempt
    from Model.models import Img
    @csrf_exempt
    def upload(request):
        if request.method == 'POST':
            img_path = []
            img_info = request.FILES.getlist('image')  #获取上传图片的信息image 是上传表单的name值
            for img_url in img_info:
                img = Img(img_url=img_url)
                # print(request.FILES.get('image'),'123')
                img.save()
                img_path.append(img.img_url)  #将本次上传的路径放到img_path列表中 这时候上传的路径为media/pic/....
            #如果想要获取到之前这次的图片信息,使用Img.objects.all()获取


1 +1