복붙노트

[PYTHON] 복수 파일 필드가있는 장고 양식

PYTHON

복수 파일 필드가있는 장고 양식

어떻게 장고에서 여러 파일 필드를 처리합니까. 예를 들어 양식 필드가 하나만있는 경우 요청을 전달합니다. 파일 [ 'file']을 처리 함수로 전달합니다. 그러나 더 많은 파일이있을 때 어떻게 갈 수 있습니까?

해결법

  1. ==============================

    1.나는 파티에 늦었지만, 잠시 동안 이것을 알아 내려고 노력했고 결국 해결책을 얻었습니다. 여기에 사용 된 코드를 살펴보십시오. https://code.djangoproject.com/ticket/12446

    나는 파티에 늦었지만, 잠시 동안 이것을 알아 내려고 노력했고 결국 해결책을 얻었습니다. 여기에 사용 된 코드를 살펴보십시오. https://code.djangoproject.com/ticket/12446

    getlist를 사용하여 다중 부분 값에 액세스 할 수 있습니다. 내 HTML 양식은 다음과 같습니다.

    <form enctype="multipart/form-data" action="" method="post">
    <input type="file" name="myfiles" multiple>
    <input type="submit" name="upload" value="Upload">
    </form>
    

    내 django 코드는 다음과 같이 처리 할 것이다.

    for afile in request.FILES.getlist('myfiles'):
        # do something with afile
    

    이것을 올바르게 처리 할 양식 필드 / 위젯을 작성하는 것이 다음 단계입니다. 나는 여전히 장고를 처음 사용하기 때문에 처음에는 장고를 배우고있다.

  2. ==============================

    2.request.FILES.get ( 'filename', None)은 다음과 같이 form-named 필드의 존재에 응답합니다 :

    request.FILES.get ( 'filename', None)은 다음과 같이 form-named 필드의 존재에 응답합니다 :

    <input type="file" name="filename"></input>
    

    그런 분야가 두 개인 경우 :

    <input type="file" name="file1"></input>
    <input type="file" name="file2"></input>
    

    그런 다음 request.FILES.get ( 'file1', None) 및 request.FILES.get ( 'file2', None)은 각각 파일을 제공해야합니다.

    그 이유는 멀티 파트 마임입니다. 세 부분 (form data, file1, file2)은 업로드되어야하고 Django의 UploadFileHandler는 이것을 분리하여 request.POST와 request.FILES로 분리합니다.

  3. ==============================

    3.다음은이 답변에 대한 좋은 링크입니다. https://github.com/Chive/django-multiupload. 그러나 ModelForm을 사용하지 않아서 몇 가지 사항을 변경해야했습니다. 보기에서 나는 아래에 코드를 작성하고 디스크에 파일을 저장했습니다.

    다음은이 답변에 대한 좋은 링크입니다. https://github.com/Chive/django-multiupload. 그러나 ModelForm을 사용하지 않아서 몇 가지 사항을 변경해야했습니다. 보기에서 나는 아래에 코드를 작성하고 디스크에 파일을 저장했습니다.

    for each in form.cleaned_data['attachments']:
        handle_uploaded_file(each)
    
    def uploadMyWork(request):
        from .forms import UploadFileForm, handle_uploaded_file
        print 'in uploadMyWork'
    
        if request.method == 'GET':
            print 'in uploadMyWork : GET'
            form = UploadFileForm()
        else:
            form = UploadFileForm(request.POST, request.FILES)
            print 'in uploadMyWork : POST'
            #for each in form.cleaned_data['attachments']:
            #    handle_uploaded_file(each)
            #return render(request, 'stitchme/uploadMyWork.html', {'msg': "file uploaded successfully"})
    
            if form.is_valid():
                 print 'inside form valid'
                 for each in form.cleaned_data['attachments']:
                     handle_uploaded_file(each)
                 return render(request, 'stitchme/uploadMyWork.html', {'msg': "file uploaded successfully"})
    
        print 'returning to uploadmywork'
        return render(request, 'stitchme/uploadMyWork.html', {'form': form, 'msg':'hi'})
    
  4. from https://stackoverflow.com/questions/5742119/django-form-with-multiple-file-fields by cc-by-sa and MIT license