Hello world 출력
from flask import Flask
from flask.globals import request
app = Flask(__name__)
# localhost
@app.route('/')
def index():
return 'Hello World!'
if __name__ == '__main__':
# app.run(debug=True)
app.run(host="0.0.0.0", port=80)
GET방식
- 파라미터 값 가져오기 (getParameter)
- request.args.get('name값', default='초기값')
from flask import Flask
from flask.globals import request
app = Flask(__name__)
# localhost/param
@app.route('/param')
def param():
arg = request.args.get('menu', default = '탕수육');
return 'PARAM : {}'.format(arg)
if __name__ == '__main__':
# app.run(debug=True)
app.run(host="0.0.0.0", port=80)
POST 방식
- post로 페이지 접근하기
- @app.route('주소', methods=['POST'])
- post방식으로 데이터 받기
- request.form['name값']
- request.form.get('name값', default='기본값')
from flask import Flask
from flask.globals import request
app = Flask(__name__)
# localhost/post
# method를 붙이지않으면 get방식이므로 꼭 post를 넣어야한다
# get 방식도 받을땐 methods=['POST', 'GET']
@app.route('/post', methods=['POST'])
def post():
arg = request.form['menu'];
# arg = request.form.get('menu', default='짬뽕')
return 'POST : {}'.format(arg)
if __name__ == '__main__':
# app.run(debug=True)
app.run(host="0.0.0.0", port=80)
Forward방식
- render_template("html이름")
- 해당 html은 같은 폴더 내의 templates라는 폴더 안에 존재해야한다
from flask import Flask
from flask.globals import request
from flask.templating import render_template
app = Flask(__name__)
# localhost/forw
@app.route('/forw')
def forw():
# 해당 위치에 templates 폴더를 생성해 html을 넣어줘야 정상 실행된다
return render_template("forw.html")
if __name__ == '__main__':
# app.run(debug=True)
app.run(host="0.0.0.0", port=80)
localhost/forw를 입력하면 forward방식으로 forw.html파일로 넘어가게되는데
이때 url은 forw.html이 아닌 localhost/forw가 그대로 유지된다 이것이 forward방식이다
redirect는 그대로 주소를 넘겨주는 것이므로 url이 변경된다
Forward 데이터 전달
java | flask |
request.setAttribute("data", a); request.getRequestDispatcher("url이름").forward(request, response) |
render_template("url이름", data=a) |
(JSTL을 통한) <%c:set var="data" value="<%=data %>"> ${data} |
{{data}} |
- 데이터 전달
- render_template("url이름", 이름='전달할 변수')
- 해당 이름을 통해 html에서 {{이름}}을 입력하면 html에서 출력된다
- 전달받은 데이터를 출력시 html에서 사용하는 방법
- {% ... %} - 문장(Sentences)
- {{ ... }} - 표현식(Expressions)
- {# ... #} - 주석
- # ... ## - 라인 문장
from flask import Flask
from flask.globals import request
from flask.templating import render_template
app = Flask(__name__)
# localhost/forw
@app.route('/forw')
def forw():
a = "홍길동"
b = ["오리", "거위"]
# 연관 배열, 사전식 배열, 딕셔너리
c = [
{'e_id' : 1, 'e_name':'1', 'gen':'1', 'addr':'1'},
{'e_id' : 2, 'e_name':'2', 'gen':'2', 'addr':'2'},
{'e_id' : 3, 'e_name':'3', 'gen':'3', 'addr':'3'}
]
# 해당 위치에 templates 폴더를 생성해 html을 넣어줘야 정상 실행된다
return render_template("forw.html", data=a, list=b, c=c)
if __name__ == '__main__':
# app.run(debug=True)
app.run(host="0.0.0.0", port=80)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
FORW HTML화면<br>
{{data}}<br>
{% for i in list %}
{{i}}<br>
{% endfor %}
<table border="1">
<tr>
<th>사번</th>
<th>이름</th>
<th>성별</th>
<th>주소지</th>
</tr>
{% for i in c %}
<tr>
<td>{{i.e_id}}</td>
<td>{{i.e_name}}</td>
<td>{{i.gen}}</td>
<td>{{i.addr}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
DB연동
from flask import Flask
from flask.globals import request
from flask.templating import render_template
import pymysql
app = Flask(__name__)
# localhost
@app.route('/')
def index():
conn = pymysql.connect(host='127.0.0.1',
port=3305,
user='root',
password='python',
db='python',
charset='utf8')
# DictCursor, Python에서 MySQL 쿼리 결과에 컬럼 자동으로 붙이기
# 칼럼이름 : value형식으로 출력됨
cur = conn.cursor(pymysql.cursors.DictCursor)
# sql문
sql = f"""
SELECT *
FROM emp
"""
# sql문을 cur에 입력
cur.execute(sql)
# 데이타 Fetch (가져오기)
rows = cur.fetchall()
return render_template("emp_list.html", row=rows)
if __name__ == '__main__':
# app.run(debug=True)
app.run(host="0.0.0.0", port=80, debug=True)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>EMP LIST Page</h3>
<table border="1">
<tr>
<th>사번</th>
<th>이름</th>
<th>성별</th>
<th>주소지</th>
</tr>
{% for i in row %}
<tr>
<td>{{i.e_id}}</td>
<td>{{i.e_name}}</td>
<td>{{i.gen}}</td>
<td>{{i.addr}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
'Python' 카테고리의 다른 글
[Python] MVVM - js예제 / jquery예제 (0) | 2024.07.08 |
---|---|
[Python] Flask - MVC패턴 (1) | 2024.07.05 |
[Python] pymongo (0) | 2024.07.03 |
[Python] pymysql 설치 및 실행(select, insert) (0) | 2024.07.02 |
7/1 Homework - 야구게임 pyqt (0) | 2024.07.01 |