django1.8에서 양식을 사용하여 파일을 업로드하는 구현 방법

高洛峰
풀어 주다: 2017-02-22 11:04:26
원래의
1437명이 탐색했습니다.

Python에는 다양한 웹 프레임워크가 있습니다. 장고(Django)는 헤비급 선수 중 가장 대표적인 선수이다. 많은 성공적인 웹사이트와 앱이 Django를 기반으로 합니다.

Django는 Python으로 작성된 오픈 소스 웹 애플리케이션 프레임워크입니다.

Django에서는 Form 클래스를 사용하여 템플릿에서 인스턴스화하고 렌더링함으로써 양식 요구 사항을 쉽게 완료할 수 있습니다. Django의 양식 처리 방법을 사용하면 많은 작업을 절약할 수 있습니다. 비어 있을 수 없거나 입력이 유효하려면 특정 패턴과 일치해야 함을 확인하므로 처리가 매우 편리합니다. Form은 날짜, 텍스트 유형 등 많은 Form 필드를 제공하므로 기본 HTML에 익숙하다면 배우기가 매우 쉽기 때문에 오늘은 각 Form에 대해 설명하지 않겠습니다. 이 유형은 매우 특별하고 몇 가지 특별한 처리가 필요하기 때문에 오늘은 양식 파일 업로드에 대해서만 설명하겠습니다. 간단한 인스턴스를 만들어 보겠습니다.

먼저 Form을 사용하여 간단한 양식을 만듭니다. :

class UserForm(forms.Form):
username = forms.CharField(required=False)
headImg = forms.FileField()
class UserForm(forms.Form):
username = forms.CharField(required=False)
headImg = forms.FileField()
로그인 후 복사

이 양식에는 2개의 필드만 있으며 사용자는 사용자 이름을 입력하고 파일이나 이미지를 업로드해야 합니다.

다음으로 렌더링할 템플릿에 넣어보겠습니다. 이때 기본 형태를 볼 수 있습니다.

def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
#放上传文件的代码
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})
def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
#放上传文件的代码
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})
로그인 후 복사

이 함수는 사용자의 요청이 POST 요청인지 확인하고 유효한지 확인하면 OK를 반환합니다. 파일 업로드만 반환할 수 있으므로 확인과 OK 반환 사이에 업로드 파일 코드를 넣습니다. 좋습니다. 잠시 후에 그렇게 하겠습니다. GET 요청인 경우 사용자가 입력할 수 있는 빈 양식이 직접 표시됩니다.

업로드된 파일을 처리한다는 것은 서버에 파일을 생성하고, 업로드된 파일의 내용을 새로운 파일에 쓰는 것이므로 기본 기능은 업로드된 파일 객체를 파라미터로 받아서 open하는 것입니다. 파일을 로컬 파일로 복사하여 업로드된 파일에서 파일을 읽고 새 파일에 씁니다. 코드는 다음과 같습니다.

def handle_uploaded_file(f):
with open('/server/testform/upload/' + f.name, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
def handle_uploaded_file(f):
with open('/server/testform/upload/' + f.name, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
로그인 후 복사

이 업로드된 파일을 처리합니다. 함수를 사용하면 보기 기능을 더욱 향상시킬 수 있습니다. 최종 코드는 다음과 같습니다.

def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
handle_uploaded_file(request.FILES['headImg'])
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})
def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
handle_uploaded_file(request.FILES['headImg'])
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})
로그인 후 복사

이렇게 하면 파일 업로드가 완료됩니다.

위는 편집자가 소개한 Django 1.8 파일 업로드 양식입니다. 궁금한 사항이 있으시면 메시지를 남겨주시면 편집자가 시간 내서 답변해 드리겠습니다. . 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다!

Django 1.8에서 양식을 사용하여 파일을 업로드하는 방법에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿