django ImageField 保存图片

1、在settings.py文件加配置:

MEDIA_ROOT = ‘/home/myname/files/’
MEDIA_URL = ‘media/’

 

2、在models里的定义:

 

class MyModel(models.Model):
    name = models.CharField(max_length=150,null=True)
    video = models.ImageField(upload_to='images',max_length=255)

这里的upload_to的设置会自动在media文件夹下创建这样一个文件夹,该值你可以自己任意设置,可以是相对路径,也可以是一个方法(便于获得动态存储路径)

注意,这里是images,而不是/images,前者图片将被上传到/home/myname/files/images目录下,而后者则直接存放在/images顶级目录下,假如我们上传的文件名叫a.png,则实际存放路径为 /home/myname/files/images/a.png

 

最后如果要手动上传文件,则可以参考如下代码:

3、获取前台请求:

from django.core.files.base import ContentFile 

def save_file(request): 
    mymodel = MyModel.objects.get(id=1) 
    # 读取上传的文件中的video项为二进制文件
    file_content = ContentFile(request.FILES['video'].read()) 
    # ImageField的save方法,第一个参数是保存的文件名,第二个参数是ContentFile对象,里面的内容是要上传的图片、视频的二进制内容
    mymodel.video.save(request.FILES['video'].name, file_content)

4、查看数据库结果

5、当图片上传成功后,图片会自动放在MEDIA_ROOT指定的文件夹下的upload_to设置的文件夹路径下

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 中,保存图片可以通过使用 ImageField 字段来实现。你需要在你的 models.py 文件中定义一个 ImageField 字段,并在视图中处理上传的图片并将其保存到该字段中。 以下是一个简单的例子: ```python from django.db import models class MyModel(models.Model): name = models.CharField(max_length=100) image = models.ImageField(upload_to='images/') def __str__(self): return self.name ``` 在这个例子中,我们定义了一个名为 MyModel 的模型,并在其中添加了一个名为 imageImageField 字段。`upload_to` 参数指定图片上传后应该存储在哪个文件夹中。 接下来,在视图中处理上传的图片并将其保存到该字段中。以下是一个简单的视图函数: ```python from django.shortcuts import render from django.http import HttpResponseRedirect from .models import MyModel def my_view(request): if request.method == 'POST': name = request.POST['name'] image = request.FILES['image'] my_model = MyModel(name=name, image=image) my_model.save() return HttpResponseRedirect('/success/') return render(request, 'my_template.html') ``` 在这个视图函数中,我们处理了 POST 请求,将上传的图片保存到 MyModel 对象中,并将其保存到数据库中。 最后,我们需要在模板中创建一个表单,允许用户上传图片。以下是一个简单的模板: ```html <form method="post" enctype="multipart/form-data"> {% csrf_token %} <label for="name">Name:</label> <input type="text" name="name" id="name"> <label for="image">Image:</label> <input type="file" name="image" id="image"> <input type="submit" value="Submit"> </form> ``` 在这个模板中,我们创建了一个表单,允许用户上传图片。当用户提交表单,它将发送一个 POST 请求,并将图片和名称一起发送到服务器。服务器将处理上传的图片并将其保存到数据库中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值