반응형
목차
[Python] Flask와 Jinja2 사용하여 데이터 주고 받기
앞서 Post 글을 통해서 웹페이지(HTML)에서 백엔드(Back end) 서버로 값을 보낼 때 GET, POST 와 같은 request를 이용해서 값을 전달하였습니다. jinja2는 백엔드 여기서는 flask를 이용해서 돌리는 서버에서 웹페이지(Web page)로 값을 보낼 때 사용하는 툴입니다.
jinja2는 파이썬에서 지원하는 동적 templating으로 사용이 간단합니다.
jinja2 Syntax
{{ flask에서 보낸 값 }}
{% 문법(if,for) 사용 %}
{# comment #}
단순히 flask에서 보낸 값을 받을 경우 첫번째 방식으로 HTML 문서에 선언하면 됩니다. 문법이 포함될 경우 2번째 줄과 같이 사용하시면 됩니다.
[Python] Flask와 Jinja2 사용하여 데이터 주고 받기 : 예제
이번 예제는 아이디와 비밀번호를 입력하는 form을 만들고 두 값을 모두 입력하면 form으로 flask에 전달하고 flask는 해당 값을 다시 html로 보내서 html에서 출력하는 예제입니다
코드-login.html>>
<!DOCTYPE html>
<html lang="en">
<head>
<title>scribblinganything.tistory.com</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container">
<form action = "http://localhost:9999/login" method = "post">
<div class="row">
<div class="col-sm-9">
</div>
<div class="form-floating col-sm-3">
<input type="text" class="form-control " id="id" placeholder="id" name="id">
<label for="아이디">아이디</label>
</div>
</div>
<div class="row">
<div class="col-sm-9">
</div>
<div class="form-floating col-sm-3">
<input type="text" class="form-control col-sm-3" id="pwd" placeholder="pw" name="pw">
<label for="pw">비밀번호</label>
</div>
</div>
<button type="submit" class="btn btn-primary" style="float:right;" id="login">로그인</button>
</form>
</div>
<div>
{% if id and pw %}
<p>{{ id }}</p>
<p>{{ pw }}</p>
{% elif id or pw %}
<p>id, pw 둘 다 입력해야합니다</p>
{% else %}
<p>입력을 하지 않았습니다</p>
{% endif %}
</div>
</body>
</html>
login.html 파일은 templates 안에 넣어야 정상 동작 합니다.
34번~41번 라인 : jinja2 문법
34번 라인 : pw와 id 값이 flask에서 넘어왔을 경우 아래 구문을 실행합니다
35번 라인 : {{}} 를 사용하여 변수를 보여줍니다.
41번 라인 : if 문이 종료 하면 endif 로 마무리 짓습니다.
코드 - flask python 파일>>
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/login',methods = ['POST', 'GET'])
def login():
if request.method == 'POST':
id = request.form['id']
pw = request.form['pw']
return render_template("login.html",id=id,pw=pw)
else:
return render_template("login.html")
if __name__ == '__main__':
app.run(debug = True, port=9999)
7번 라인 : POST로 form이 올 경우 실행 합니다.
10번 라인: render_template를 사용하면 페이지와 보낼 값을 입력 합니다.
결과>>
반응형
'파이썬(Python) > Flask' 카테고리의 다른 글
[Python] 세션(Session)이란? flask에서 구현해보기(jinja2사용) (0) | 2021.11.24 |
---|---|
[Python] Flask, Jinja2 form데이터 출력하기(for문, bootstrap 사용) (0) | 2021.11.20 |
[Python] flask form 값 받기 (GET, POST) (0) | 2021.11.17 |
[Python] flask 주소 간에 이동 방법 (redirect, url_for) (2) | 2021.11.14 |
[Python] flask 변수 사용 방법(Variables, string,int,float) (0) | 2021.11.13 |