본문 바로가기
Web Programming/django

[Django] 클라이언트 요청 처리

by 테리는당근을좋아해 2020. 6. 19.

url에 입력되는 클라이언트의 요청은 view를 통해 처리되게 된다.

이러한 로직을 정확히 파악하려면 먼저 MVC 패턴에 대한 이해가 필요하다.

Django에서는 ruby on rails나 spring에서 사용되는 MVC 패턴과 같은 MTV 패턴을 사용한다.

M은 Model

Django의 T(Template)는 다른 프레임워크의 V(View)와 같다.

Django의 V(View)는 다른 프레임워크의 C(Controller)와 같다.

 

MVC 패턴에 대한 이해는 아래 링크를 참조

! MVC 패턴은 추후 업로드 예정

 

클라이언트가 입력한 데이터에 대한 간단한 처리를 하는 기능을 구현해보자

1) 사용자는 index 화면에서 두 개의 데이터를 입력하고 서버에 두 값의 합을 요청

2) view는 두 개의 데이터의 합을 구함

3) template은 두 개의 합에 대한 값을 표현할 수 있는 result 화면을 구성

 

1. index.html 수정

<form action="{% url 'result' %}">
    <input type="text" name="a">
    <input type="text" name="b">
    <input type="submit" text="submit">
</form>

- 사용자의 입력을 받을 수 있도록 index.html 을 수정

- input tag 두 개를 이용해 사용자 입력을 받음

- submit 버튼을 누르면 서버에 '도메인주소/reulst/' 에 대한 요청을 함

 

2. result.html 생성

{{ c }}

사용자의 입력에 대한 서버의 응답 값을 표현할 수 있도록 Django 템플릿 변수를 이용해 값을 표현

 

3. views.py 수정

def result(request):
    a = request.GET['a']
    b = request.GET['b']
    c = int(a) + int(b)
    return render(request, 'result.html', {'c' : c})

- 사용자의 입력을 받을 화면과 결과를 보여줄 화면에 대한 구현은 끝난 상태

- 따라서 사용자의 입력을 처리할 로직을 구현해야함

- urls.py로부터 result 함수가 실행되어야 하는 클라이언트의 요청이 입력되었을 때, input 태그의 a값과 b값을 확인 후에 이에 대한 합인 c값을 딕셔너리 형태로 전달

 

 

! 템플릿 태그와 템플릿 변수

(1) 템플릿 테그

- {% %}로 둘러싸여져 있는 것

- url, load, for, if 등 장고에서 사용할 수 있는 함수들을 사용하는 태그

 

(2) 템플릿 변수

- {{ }}로 둘러싸여져 있는 것

- views에서 딕셔너리형태로 넘겨 받은 변수를 사용하는 태그

 

'Web Programming > django' 카테고리의 다른 글

[Django] CRUD Operation(2)  (0) 2020.06.20
[Django] CRUD Operation(1)  (0) 2020.06.19
[Django] Model  (2) 2020.06.19
[Django] 프로젝트 생성과 앱 생성  (0) 2020.06.19
[Django] 가상환경 준비  (0) 2020.06.18

댓글