프레임을 보여줍니다 ## 장고를
전후 단부 ## 데이터를 송신하는 형식을 코딩
#의 인코딩 포맷 데이터 전방 및 후방 단부를 송신 . 1 .urlencoded 2 .formdata 3. 신청 / JSON
아약스 양식에서 ##과 선단에서 파일을 다시 보내
기본 인코딩 형식은 문서 (과거에 전송 된 파일 이름 만) 발행 urlencoded를 지원하지 않는 형태의 양식 은 데이터 형식의 사용자 이름에 해당 = 비밀번호 123 제이슨 request.POST는 데이터를 urlencoded로 데이터 형식을 구문 분석 formdata 장고 데이터를 파일에 도움이 될 것입니다 request.FILES는 파일 전송하도록 설계된 내부에 꺼내 도 urlencoded로 인코딩 형식 아약스 기본 제출 장고는 데이터 전송 시간 아약스 JSON 형식으로 아무것도하지 않습니다 때 수동으로 할 수 request.body에 바이너리 형태의 데이터 디코딩 플러스 해당 역 직렬화 데이터 사전 형식을 얻을 수 JSON 형식 데이터 전송 Ajax를
$의 아약스를 ({
URL : '', // 제출을 향해있는 현재 페이지의 기본 URL 주소를 쓰지 않는다
POST : 유형의 ''
의 contentType을 '응용 프로그램 / JSON ',
데이터 다음 JSON.stringify ({'이름 ':'제이슨 ','csrfmiddlewaretoken ':'{csrf_token} {}})
성공 :기능 (데이터) {
경고 (데이터)
}
}) Ajax를 이용하여 송신 JS 내장 파일 객체 FormData
DEF의 인덱스 (요청) : IF request.method == ' POST가 ' : 인쇄 (request.POST의) 인쇄 (request.FILES) # file_obj = request.FILES.get ( 'myfile을') #의 인쇄 (file_obj.name) #보기 파일 오브젝트의 현재 파일명 # 1 (아닌 기본 인코딩 urlencoded를 있지만 = enctype은 "다중 / 폼 데이터">에 수정 참고) 형태의 데이터를 통해 통과 로컬 파일 서버에 기록되어 형성 # , 열기 (file_obj.name F AS 'WB')는 : # 라인은 file_obj에서 : #의 f.write (라인) # Ajax를 이진 데이터가 request.body에서 별도의 데이터를 통해 전송하고, 상기 데이터 사전을 얻기 위해 복호화 될 수있다 다음 직렬화 포맷이다 #의 전단 ( request.body) # bytes_str = request.body #의 입술의 json.loads = (bytes_str.decode ( "UTF-8")) #에 인쇄 (입술, 유형 (입술)) 반환 렌더링 (요청 ' index.html을 ' )
<! DOCTYPE HTML> <HTML> <HEAD> <메타 문자 집합 = " UTF-8 " > <제목> 제목 </ 제목> <스크립트 SRC = " https://cdn.bootcss.com/jquery/3.4.1/ jquery.min.js " > </ script> </ head> <body> { # <form 조치 =" "METHOD ="POST "에 enctype ="multipart / form-data "로> #} { # {csrf_token %의 %} #} { # <p> 자명 <입력 유형 = "텍스트"이름 = "이름"> </ p> #} { # <p> 암호 : <input 타입 = "패스워드 "NAME ="비밀번호 "> </ p> #} { # <p> 이미지 : <input 타입 ="파일 "NAME ="myfile을 "> </ p> #} { # <INPUT 유형 = "제출"> #} { # </ FORM> #} <INPUT 유형 = " 파일 " 이름 = " myfile을 " ID = " D2 " > <버튼 ID = " D1 " > 점 I </ 버튼> <script> $ ( ' #의 D1 ' ) .click (함수 () { // 의 사용과 필요한 경우 내장 된 객체 FormData 아약스 파일 전송 VAR formData = FormData 새 새 (); //이 생성하는 내장 객체 // 내장 객체 formdata 보통 키 - 값 쌍을 전달할 수 있습니다, 당신은 또한 파일을 전송할 수 있습니다 formData을.(추가 ' 이름을 ', ' 제이슨 ' ); // 공통 키 - 값 쌍 formData.append ( ' 암호 ' , ' 123 ' ); // 파일 전송 VAR fileObj = $ ( ' #의 D2 ' ) [0] .files [0] // 0 다음 파일 방법의 목록을 가져 내장 객체 기본 JS로 오브젝트 레이블 객체를 얻기 위해 인덱스 파일을 얻을로 이동 formData.append ( ' myfile을 ' ;, fileObj) $ 아약스 ({ : URL '' , // 쓰지 않는다 현재 페이지의 URL 주소를 향한 기본 제출은 위치 유형 : ' POST ' , //파일 전송시 수동 아약스 두 가지 특별한 매개 변수를 지정해야합니다 contentType이를 : 거짓, // formdata 어떤 인코딩 사용할 수 있습니다 코딩 내 자신을 사용하지 않는 processData : FALSE, // 내 데이터 무엇인지를 처리하지 않는 브라우저를 에 어떤 데이터 : formData, 성공 : 기능 (데이터) { 경고 (데이터) } }) }) </ SCRIPT> </ BODY> </ HTML>
## 페이지 캐시 지우기를 추가