Django 之上传图片,入库,及保存到静态目录的 一些基础方法

  • 首先呢,我们需要创建一个项目这是必须的,因前面已经介绍过了创建项目的过程,在这儿就不过多的去详解了 , 若想了解 点击:创建项目

第一需要在项目下手动创建一个static 的文件目录,然后我们在setting.py 中 配置一个路径 用来保存 图片:
!表示项目根路径下的static文件夹下的upload文件夹

UPLOADFILES_DIRS = os.path.join(BASE_DIR, ‘static/upload’)

第二 在views.py中 创建一个类视图 用来读取从form表单中传过来图片 对它进行保存 及入库操作:


导入我们需要用的包

from django.shortcuts import render
//创建项目时自带的包
from django.views import View
//我们创建类视图所需要的包
import os
//拼接地址所需要的包
from django.conf import settings
//以及在我们需要settings中我们创建的路径 所以把 settings.py页导过来
from datetime import datetime

创建类视图

class UploadView(View):
	def get(self, request):
		''''渲染模板'''
		return render(request, 'upload.html')

	def post (self, request):
		''''获取数据进行逻辑处理'''
        img = request.FILES.get('img')		#通过  FILES.get 获取 图片形式数据

        #判断参数是否齐全
        if not img:
            return render(request, 'upload.html',{'error':'参数不全'})

        #对文件名进行拼接防止加入静态文件夹时 出现重名的情况
        这李我用添加时的当前时间进行 一个动态的拼接
        fix =datetime.now().strftime('%Y%m%d%H%M%S%f') + '1'

       ***上传图片***
        #对 我们settings中已经配置好的路径 把文件的名称进行存入
        img_path = os.path.join(settings.UPLOADFILES_DIRS, fix + img.name)
        f = open(img_path, 'wb')
        for i in img.chunks():
            f.write(i)
        f.close()

        # 入库操作

        goods_cate.images = '/static/images/' + fix + img.name
        goods_cate.save()
        return render(request, 'add_goods.html',{'error':'分类添加成功'})
        

这里呢我们有一个注意点
在from 表单中传送 图片类型的 input框type类型需要写入 file文件类

传送时 form 中就不单单是 POST 提交方式, 还必须有:
enctype="multipart/form-data"

才能进行图片的传送

你可能感兴趣的:(Django)