Django 파일을 업로드하는 세 가지 방법
4617 단어 Django
form 폼을 통해 백엔드로 제출
앞부분:
Title
Django 백엔드:
class Upload(View):
def get(self, request):
return render(request, 'clashphone/test.html', {
'mould': os.path.join(BASE_DIR, 'media', 'commen'),
'MEDIA_URL': MEDIA_URL}
)
def post(self, request):
obj = request.FILES.get('fafafa', '1')
print(obj.name)
f = open(os.path.join(BASE_DIR, 'media', 'image', obj.name), 'wb')
for chunk in obj.chunks():
f.write(chunk)
f.close()
# return render(request, 'clashphone/test.html')
return HttpResponse('OK')
방법 2:
aax를 통해 제출
앞부분
JS:
function FileUpload() {
var form_data = new FormData();
var file_info =$( '#file_upload')[0].files[0];
form_data.append('file',file_info);
//if(file_info==undefined)
//alert(' ');
//return false
$.ajax({
url:'/upload_ajax/',
type:'POST',
data: form_data,
processData: false, // tell jquery not to process the data
contentType: false, // tell jquery not to set contentType
success: function(callback) {
console.log('ok')
}
});
}
Django 백엔드:
def upload_ajax(request):
if request.method == 'POST':
file_obj = request.FILES.get('file')
import os
f = open(os.path.join(BASE_DIR, 'static', 'pic', file_obj.name), 'wb')
print(file_obj,type(file_obj))
for chunk in file_obj.chunks():
f.write(chunk)
f.close()
print('11111')
return HttpResponse('OK')
참고:
프론트 데스크에서 aax 요청을 보낼 때:
processData: false,//tell jquery not to process the data contentType: false,//tell jquery not to set contentType 필수 설정
방법 3: iframe 탭을 통해 앞 부분을 제출합니다.
JS:
function UploadFile() {
document.getElementById('my_iframe').onload = Testt;
document.getElementById('my_form').target = 'my_iframe';
document.getElementById('my_form').submit();
}
function Testt(ths){
var t = $("#my_iframe").contents().find("body").text();
console.log(t);
}
Django 백엔드:
def upload_iframe(request):
if request.method == 'POST':
print(request.POST.get('user', None))
print(request.POST.get('password', None))
file_obj = request.FILES.get('file')
import os
f = open(os.path.join(BASE_DIR, 'static', 'pic', file_obj.name), 'wb')
print(file_obj,type(file_obj))
for chunk in file_obj.chunks():
f.write(chunk)
f.close()
print('11111')
return HttpResponse('OK')
확장:
이전 단계에서 제출할 때 checkbox 탭이 존재할 수 있습니다. Django에서 이 탭이 백엔드에서 값을 가져올 때 사용합니다.
request.POST.getlist('favor', None) checkbox
기타
request.POST.get('favor', None) checkbox
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.