2017-04-12 99 views
0

我想在django中存储图像,但无法做到这一点。这就是我想..在django中存储图像

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字段,但不会将该图像保存在Project/project/media/media文件夹中。

项目/项目/ url.py

from django.conf.urls import url ,include 
    from django.contrib import admin 
    from django.conf import settings 
    from django.conf.urls.static import static 

    urlpatterns = [ 
     url(r'^ReportsData/', include('Reports.urls')), 
    ] 

    if settings.DEBUG : 
     urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
     urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) 

和上述upload.html,views.py,models.py属于应用报告。 我必须做什么才能成功存储图像

回答

2

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

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

是的,它工作。谢谢你 – Rajadip