Python--Django:上传图片

上传图片时必要的配置

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('上传成功')
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此时一位小白路过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值