[Django]html에서 views.py로 데이터(변수/파라미터) 통신 제일 쉬운 방법(form을 통한 post방식)

2021. 12. 20. 01:50python 전문가로/Django

반응형

안녕하세요.

Django로 웹페이지를 만들때, 

HTML에서 View.py로 데이터(변수)를 넘기는 상황도 있을 수 있을텐데요.

가장 간단한 방법을 공유하려고 합니다.

 

바로 예로 들어갈게요!

달력의 날짜를 넘기는 것을 예를들어볼게요. 

아래는 로컬로 웹페이지를 띄운 화면과 코드입니다. 

<!DOCTYPE html>
{% load static %}
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>Test</title>

    <meta name="viewport" content="width=device-width, initial-scale=1">

</head>
<body>
<div class="container">

<form method="GET">
<label for="start" >Start date:</label>
<input type="date" id="start" name="trip-start" value= "2021-12-15" min="2018-01-01" max="2021-12-31">
<input type="submit">

</div>
</form>
</body>
</html>

 

데이터를 발생시키는 태그밖에 <form></form>으로 감싸줍니다.

여기서 <form> 태그 안에 method="GET"이라는 문법을 써줍니다.

여기서 "GET"은 쉽게 말해 "데이터를 통신하겠다."라는 것을 알려주는 문법입니다. 비슷한 방식으로는 "POST"가 있는데요. 나중에 이부분에 대해서도 자세히 알려드리도록 할께요!

<input>태그 안에 name="trip-start"라는 태그가 있는데 여기서 중요한 키워드는 name입니다.

name으로 veiws.py에서 받기 때문입니다.

여기서는 name="trip-start"라는 것을 기억해주세요~!

 

그럼 views.py로 넘어가보겠습니다.

from django.shortcuts import render

def index(request):
    date = request.GET.get('trip-start')
    print("HTML에서 넘어온 date: ", date)
    
context = {
        'date': date,
    }

    return render(
        request, 'blog/index.html', context
    )

HTML에서 name의 변수를 아래와 같이 가져오면 끝입니다! 

date = request.GET.get('trip-start'

*HTML에서 변수를 받아와 원하시는 전처리를 진행 후 context = { } 안에 넣어서 다시 HTML로 데이터를 넘길 수도 있습니다.

 

그럼 cmder(Windows용 console emulator)에서 확인을 해볼까요?

HTML에서 2021-12-15로 "제출"를 눌러봅니다. 

views.py에서 print()했던 내용이 cmder에서 확인 할 수 있습니다.