[ Python ] Django로 웹 서비스 개발하기 ( 10. form과 post 처리)

peter_yun
4 min readFeb 27, 2017

--

장고로 시작하는 2017년

본 글은 코드스쿼드가 진행하는 인프런의 장고 강의를 바탕으로 함
(참고 : http://bit.ly/2jE3ARl )

FORM

본 포스팅은 이전 MTV 연동하기 포스팅에 이어 데이터를 입력 받는 form에 대한 포스팅입니다.

(url 설정) 우선 lotto폴더에 form.py라는 새로운 파일을 생성하고 urls.py도 수정해줍니다. 하지만 urls.py의 views.post는 아직 구현이 안되었기 때문에 오류가 날 것입니다. ▼

  • 입력받을 때는 post 메소드를 주로 사용
  • PostForm이라는 클래스는 forms의 ModelForm 클래스를 상속
(주의) field 가 아니라 fields 입니다!!

(view 설정) url은 있지만 url을 연결해줄 view가 없기 때문에 views의 post 메소드를 구현해주어야 합니다. 또한 view단에서 forms를 import 해옵니다. 이제 html (template)이 남아있습니다.▼

(template 설정) view에서 넘겨준 form 오브젝트를 html에 삽입합니다. 결과적으로 두개의 입력창과 버튼이 생겼습니다. 아직 save를 눌러도 데이터가 저장되지는 않습니다. ▼

  • token은 보안 이슈로 인한 것 (?)
  • form객체는 기본적으로 form을 위한 객체 (?)
  • 버튼 태그의 class 속성은 부트스트랩 (?)
결과 페이지 http://127.0.0.1:8000/lotto/new/

POST 처리하기

form 생성에 이어서 post 처리 방법을 알아보도록 하겠습니다. 이전 form에서는 데이터가 저장이 되지 않았습니다. 이는 views.py에서 post 메소드는 get메소드와 다르게 처리되어야 하기 때문입니다.

post의 if와 else문은 아래와 같은 형식으로 구성됩니다. ▼

if문을 채워넣어 이제 데이터를 저장해보도록 하겠습니다.

아래와 같이 views.py를 수정합니다. 변경사항은 아래와 같습니다.▼

  • redirect 를 import 함
  • if문의 return을 redirect(‘index’)로 지정

이제 form에 데이터를 입력하면 실제로 데이터가 저장됨을 admin에서 확인할 수 있습니다. ▼

--

--