将图像存储在django中

时间:2017-04-12 18:56:46

标签: python django

我想在django中存储imaage但无法执行此操作。这是我试过的..

upload.html

<form name="saveImage" enctype="multipart/form-data" action="{% url 'Reports:saveimage'%}" method="post">
    {% csrf_token %}
    <div style = "max-width:470px;">

        <center>
            <input type = "file" style = "margin-left:20%;"
                   placeholder = "Picture" name = "picture" />
             <input type="submit" value="Store"></input>
        </center>
    </div>

</form>

model.py

def vo_image_upload(inatance,filename):
    return os.path.join('Volunteer',filename)

class Volunteer(models.Model):
    myphoto = models.ImageField(db_column='MyPhoto', upload_to=vo_image_upload, blank=True, null=True)

views.py

def saveimage(request):
    image= request.FILES['picture']
    vo = Volunteer.objects.using('NSS_VO').update(myphoto=image).
    return HttpResponse("<h1>Success</h1>")

使用更新是因为我在注册后存储图像。 此代码仅将文件名保存到数据库中的myphoto字段,但不将图像存储在media的{​​{1}}文件夹中。

项目/项目/ url.py

Project/project/media/

以及upload.html,views.py,models.py属于app Reports。 我需要做哪些更改才能成功存储图像

1 个答案:

答案 0 :(得分:2)

您无法使用update()执行此操作,因为它仅对数据库进行操作,并且不会执行任何实际的文件保存。您必须获取对象,分配文件字段并保存:

vo = Volunteer.objects.using('NSS_VO').get(id=whatever)
vo.myphoto=image
vo.save()