43번째 줄: |
43번째 줄: |
| | | |
| = Form을 사용한 입력받기 = | | = Form을 사용한 입력받기 = |
| + | 그냥 받기만 해선 받은 자료로 연산할 때 에러가 뜨기도 한다. 이를 위해선 form을 사용한 검증이 되면 편하다. |
| | | |
| === forms.py 만들기 === | | === forms.py 만들기 === |
75번째 줄: |
76번째 줄: |
| | | |
| === 탬플릿 작성하기 === | | === 탬플릿 작성하기 === |
| + | <syntaxhighlight lang="html+django"> |
| + | <form method="get" action="{% url 'utility:compound_interest' %}"> |
| + | {% csrf_token %} |
| + | {{form}} |
| + | <input type="submit" value="버튼에넣을말"> |
| + | </form> |
| + | </syntaxhighlight>위와 같이 작성할 수도 있지만, 에러메시지에 특화를 주고 싶거나, 속성마다 개별적인 HTML 코드를 부여하고 싶다면 다음과 같이 분리해 써넣을 수도 있다. |
| | | |
− | = 자료 검증 = | + | 폼의 기능을 모두 활용하려면 폼 안에서 라벨을 지정하는 것과 html속성을 지정하는 방법을 사용하는 게 좋지만, 다음과 같은 형태는 백엔드와 프론트엔드를 분리할 수 있다는 장점이 있다.<syntaxhighlight lang="html+django"> |
− | 그냥 받기만 해선 해당 자료로 연산할 때 에러가 뜨기도 한다. 이를 위해선 form을 사용한 검증이 되면 편하다.
| + | <!-----에러처리----------------------------> |
| + | {% if form.errors %} |
| + | <div class="alert alert-danger" role="alert"> |
| + | {% for field in form %}<!--모든 필드를 뒤지며 에러를 찾는다.--> |
| + | {% if field.errors %} |
| + | <strong>{{ field.label }}</strong><!--에러가 난 필드의 라벨에 굵음 처리--> |
| + | {{ field.errors }}<!--어떤 에러인지 보여준다.--> |
| + | {% endif %} |
| + | {% endfor %} |
| + | </div> |
| + | {% endif %} |
| + | |
| + | <form method="get" action="{% url 'utility:compound_interest' %}"> |
| + | {% csrf_token %} |
| + | <label for="principal">얼마 넣을래?</label> |
| + | <input type="text" name="principal" id="principal" |
| + | value="{{ form.principal.value|default_if_none:'' }}"> |
| + | <label for="interest_rate">이자율은?(단위는 %)</label> |
| + | <input type="text" name="interest_rate" id="interest_rate" |
| + | value="{{ form.interest_rate.value|default_if_none:'' }}">% |
| + | <label for="how_many">몇회 받아?</label> |
| + | <input type="text" name="how_many" id="how_many" |
| + | value="{{ form.how_many.value|default_if_none:'' }}"> |
| + | <label for="additional">중간에 일정금액 투입해?</label> |
| + | <input type="text" name="additional" id="additional" |
| + | value="{{ form.additional.value|default_if_none:'' }}"> |
| + | <p><input type="submit" value="Submit"></p> |
| + | <p>최종적으로 받는 금액은 {{result}}야.</p> |
| + | </form> |
| + | </syntaxhighlight> |
| [[분류:7-0. 장고 중급 튜토리얼]] | | [[분류:7-0. 장고 중급 튜토리얼]] |