2016-06-18 5 views
0

작은 프로젝트에 문제가 있습니다. 기본적으로 내 사이트에는 사용자 계정이 있으며, 각 사이트는 이미지를 서버에 업로드 할 수 있습니다 (갤러리처럼 말하십시오). 분명히 모든 이미지가 단일 폴더에 나타나기를 원하지 않기 때문에 각 사용자의 이미지가 각 디렉토리에만 표시되도록 구현했습니다.Django 빠른 파일 삭제

사용자가 업로드 할 수있는 동안 문제는 이러한 파일을 삭제할 수 있도록 만드는 방법을 모르겠다는 것입니다.

테이블 "ImageDoc"에는 파일 이름을 저장하는 "imgfile"열이 있습니다.

view.py 위의 코드는 작동

def image_galleria(request): 
    LOCATION = request.user.username + "/" 

    if request.method == 'POST': 
     form = ImgDocForm(request.POST, request.FILES) 

     if form.is_valid(): 
      origin_form = form.cleaned_data["user_file"] 
      origin_name = origin_form.name 
      new_name = origin_name.split('.')[0] + ".jpg" 
      original_file = os.path.join(settings.MEDIA_ROOT+LOCATION, new_name) 

      original_name = ImageDoc(user_id=user_details.id, imgfile=new_name) 
      original_name.save() 

은, 사용자의 각각의 디렉토리에 저장합니다. 그러나 ...

view.py

@login_required(login_url='sign_in') 
def delete_image(request, image_id): 
    imagex = ImageDoc.objects.get(id=image_id) 
    LOCATION = request.user.username + "/" 
    imagex.imgfile.delete(LOCATION) 

    return HttpResponse("Yes! Deleted file!") 

나는 "() .delete", 어떤이 작동하지 않는 다양한 콤보를 시도했다. 내가 뭘 잘못하고 있는거야? 그냥 file 객체를 얻고 삭제 파일을 삭제 ... 귀하의 경우에는 원하는 경우

답변

0

imagex.delete() 
+0

응답 해 주셔서 감사합니다. 그래도 작동하지 않습니다. 이것은 작동합니다. 이것은 작동합니다 : 'imagex.imgfile.delete()' 하지만 내 문제는 삭제 기능이 사용자의 디렉토리 (일반 MEDIA 디렉토리) 내의 파일을 삭제하지 않는다는 것입니다. – Bob

0

가 나는 다른 방법을 사용하여 그것을 해결 생각해야한다. 미래 참고 :

views.py

@login_required(login_url='sign_in') 
def delete_image(request, image_id): 
    imagex = ImageDoc.objects.get(id=image_id) 

    imgfile = settings.MEDIA_ROOT + request.user.username + "/" + imagex.imgfile.name 
    os.remove(imgfile) 

    imagex.imgfile.delete() 
    imagex.delete() 

    return HttpResponseRedirect(reverse('image_galleria')) 

오히려 거친 솔루션,하지만 작동 나는 가정한다. 감사!