당신은 멋쟁이, 우리는 장고쟁이~

0%

Django Forms 7편 - 필요한 작업들

The work that needs to be done


여러분들이 사용자의 이름을 얻기위해 필요한 간단한 폼을, 웹사이트에 생성하고 싶다고 가정해 봅시다.

여러분들은 아마 아래와 같은 코드를, 여러분들의 템플릿 안에 필요로 할것 입니다.


1
2
3
4
5
<form action="/your-name/" method="post">
<label for="your_name">Your name: </label>
<input id="your_name" type="text" name="your_name" value="{{ current_name }}">
<input type="submit" values="OK">
</form>

위의 간단한 폼을 잠시 둘러보자면,


  1. 브라우저에게 POST 메서드를 사용하여, 폼 데이터를 /your-name/URL 에 반환하라고 얘기합니다
  2. Your name 으로 레이블 되고, OK 가 쓰여진 버튼을 출력합니다
  3. 만약에 template 에 전달된 context 에 current_name 이라는 변수를 가지고 있다면, your_name 필드를 미리 채우는데에 사용될것입니다.

위의 HTML 폼을 가지고 있는 템플릿을 렌더해줄 뷰가 필요할것 입니다. 그리고, 그 뷰는 current_name 필드를 적절하게 제공해줄수 있습니다.


폼이 제출될때


폼이 제출 될때에는, 폼 데이터를 가지고 있는 POST 요청이 서버에 보내집니다.


요청이 보내졌을때에, /your-name/ URL 과 상응하는 뷰도 필요할것입니다. 이 뷰는 적절한 키/값 페어들을 요청안에서 찾을것이고, 그것들을 처리해줄것 입니다.


정리


위의 예시는, 매우매우 간단한 폼입니다. 실전에서는, 하나의 폼이 10개 혹은 100개의 필드들을 가질수도 있고, 많은것들이 미리 채워져야 할 필요가 있을수 있습니다.


그렇지 않으면, 사용자가 몇번의 수정-제출 을 통해 폼의 동작이 결정될수 있습니다.


우리는 브라우저에서 어떠한 유효성 검사가 필요할지도 모릅니다. 심지어 폼이 제출되기 전에도 말이죠.


사용자들이 날짜를 달력에서 선택하는것 같이 아주 복잡한 필드들을 사용하길 원할지도 모릅니다.


일단, Django 가 이런것들을 위해 기본 작업을 하게 하는것이 훨씬 쉬운 길이 될수 있습니다. (직접 모든것을 구현하려면, 힘듭니다;)