Django 학습 노트 (6) Django 업로드 파일

3333 단어 파이썬 프레임
이것은 아마도 Django의 마지막 학습 모듈일 것이다.더 깊이 들어가려면 프로젝트 안에서 실천해야 한다
Django가 파일을 업로드하는 방법은 두 가지가 있는데 하나는 전통적인 IO 흐름 기반 작업이고 하나는 대상 기반 작업으로 봉인된 것이다.
하지만 어떤 조작이든 파일을 업로드하는 디렉터리를 만들어야 합니다.
1. 입출력 흐름 기반 작업
urls의 설정, 학습노트(5)의 폼을 바탕으로 제출한blog/param/(?P\d{2})
다음과 같이 post 메서드를 수정합니다.


def post(req):
    if req.method == 'POST':
        form = UserForm(req.POST,req.FILES)
        if form.is_valid():
            print form.cleaned_data
            print form.cleaned_data['name']
            print form.cleaned_data['userImag'].name
            print form.cleaned_data['userImag'].size
            #way 1
            s = form.cleaned_data['userImag'].read()
            fb = file('./djangotest/upload/'+form.cleaned_data['userImag'].name,'wb')
            fb.write(s)
            fb.close()
            
            return HttpResponse('OK')
        else :
            return HttpResponse('Failed')
    else :
        form =  UserForm()
        
        return render_to_response('param.html',{'form':form})

대응하는 파라임.html은 다음과 같습니다.




{{id}}


{{num}}

{{url}}
form settings MIDDLEWARE_CLASSES (token )
{{form.as_p}}

둘째, 개체 기반 스토리지:
우선 settings 파일의
MEDIA_ROOT = './djangotest/'
이후의 업로드 작업의 경로가 프로젝트 자체의 경로에 비해 필사적으로 쓸 필요가 없도록 하기 위한 것이다
새 모델 추가:
class Files(models.Model):
    name = models.CharField(max_length=300)
    f = models.FileField(upload_to='upload/')

    def __unicode__(self):
        return self.name
동기화 데이터베이스
post 메서드를 수정하려면 다음과 같이 하십시오.



def post(req):
    if req.method == 'POST':
        form = UserForm(req.POST,req.FILES)
        if form.is_valid():
            print form.cleaned_data
            print form.cleaned_data['name']
            print form.cleaned_data['userImag'].name
            print form.cleaned_data['userImag'].size
            #way 1
            s = form.cleaned_data['userImag'].read()
            fb = file('./djangotest/upload/'+form.cleaned_data['userImag'].name,'wb')
            fb.write(s)
            fb.close()
            
            #way2
            f = Files(name=form.cleaned_data['userImag'].name,f=form.cleaned_data['userImag'])
            f.save()
            return HttpResponse('OK')
        else :
            return HttpResponse('Failed')
    else :
        form =  UserForm()
        
        return render_to_response('param.html',{'form':form})

대응하는 파라임.html은 다음과 같습니다.




{{id}}


{{num}}

{{url}}
form settings MIDDLEWARE_CLASSES (token )
{{form.as_p}}

좋은 웹페이지 즐겨찾기