上传图片时必要的配置
1)在项目中或者静态文件下创建media
文件
2)在settings.py
中加上MEDIA_ROOT配置
# 配置文件上传保存目录
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')
从后台管理页面上传:
1)在models.py 中设计模型类
class image(models.Model):
'''从后台上传图片'''
# upload_to 指定文件上传的地址
img = models.ImageField(upload_to='static/media/image')
2)在admin.py 中注册该模型类,则可通过后台管理页面上传图片
·
·
浏览器自定义页面上传图片
1)创建模板文件,定义上传图片的表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传图片</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="{% url 'comment:upload_handle' %}">
{% csrf_token %}
<input type="file" name="pic"><br/>
<input type="submit" value="上传">
</form>
</body>
</html>
2)在视图函数中进行上传图片的处理
。获取上传的图片
。创建一个文件
。获取上传文件的内容并写入创建的文件中
。在数据库中保存上传记录
。返回
def show_upload(request):
'''显示上传图片页面'''
print(settings.MEDIA_ROOT)
return render(request, 'middle_test/show_upload.html')
def upload_handle(request):
'''上传图片处理'''
# 获取上传的图片对象
pic = request.FILES['pic']
# pic.chunks() 返回一个生成器,存储该文件的内容
load = '%s/image/%s' % (settings.MEDIA_ROOT, pic.name)
# 在media/image目录下创建该图片文件,并通过chunks()函数获取文件内容
with open(load, 'wb') as f:
# 这里返回一个生成器需要通过遍历才可以得到内容
for content in pic.chunks():
f.write(content)
# 在数据库中添加该上传记录
image.objects.create(img='static/media/image/%s' % pic.name)
return HttpResponse('上传成功')