Django中文件上传我大概分为6步
- 首先写好子路由(前提是环境已布置好,python版本:3.6.9 ,django版本:1.11.7)
url(r'^djwj/',views.djwj,name='djwj')
还要在settings中设置
MEDIA_ROOT=os.path.join(BASE_DIR,'static/icon')
- 添加模型
class Djwj (models.Model):
d_name = models.CharField(max_length=32)
d_icon = models.ImageField(upload_to='icons')
class Meta:
db_table = 'djwj'
-
安装pillow
pip install pillow
因为字段‘ImageField’依赖于‘pillow’ 所以一定要检查Django中是否已安装pillow -
在templates中创建html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>文件上传</h1>
<form action="{% url 'zx1:djwj' %}" method="post" enctype="multipart/form-data">
<input type="file" name="icon">
<button>提交</button>
</form>
</body>
</html>
- 然后创建函数djwj
当请求方式为GET则返回页面
当请求方式为POST则执行文件上传
def djwj(request):
if request.method=='GET':
return render(request,'djwj/djwj.html')
elif request.method=='POST':
icon=request.FILES.get('icon')
djwj=Djwj()
djwj.d_name='abc'
djwj.d_icon=icon
djwj.save()
return HttpResponse('上传成功')
- 最后实例化对象即可(最终文件的保存位置就是MEDIA_ROOT与upload_to的拼接)