main.html
html에서 backend로 변수 전달
<body>
<form action="upload_process" method="post" enctype="multipart/form-data">
<div class="row">
<div class="box">
<input type="text" name="text" id="text">
<input type="submit" value="upload" id="upload">
</div>
</div>
</form>
</body>
form태그를 이용하여 post 방식으로 전달한다.
결과창
app.py
backend에서 html로 변수 전달
app = Flask(__name__)
db = pymysql.connect(host=config.DATABASE_CONFIG['host'], port=3306, user=config.DATABASE_CONFIG['user'], passwd=config.DATABASE_CONFIG['passwd'], db=config.DATABASE_CONFIG['db'], charset="utf8")
cur = db.cursor()
# 기본 언어셋 변경
db.query("set character_set_connection=utf8;")
db.query("set character_set_server=utf8;")
db.query("set character_set_client=utf8;")
db.query("set character_set_results=utf8;")
db.query("set character_set_database=utf8;")
sql = "SELECT address from zcompany"
cur.execute(sql)
data_list = cur.fetchall()
print(data_list[0][0])
print(data_list[1])
print(data_list[2])
# db.close()
@app.route('/')
def main():
return render_template('main.html')
@app.route('/upload_process', methods=['POST'])
def upload_process():
value = request.form['text']
print(value)
return render_template("upload.html",value=value,data_list=data_list)
post 방식으로 request가 들어온 경우, text의 name을 가진 form의 value를 전달 받는다.
render_template의 매개변수에 전달 할 변수와 값을 설정한다.
결과창
1. terminal 에서 값 확인 해보기
- 프린트로 datebase에서 값 잘 가져왔는지 확인
- main.html에서 값 입력 후 upload 버튼 클릭 시 입력한 값 출력 되는지 보기
2. web에서 확인
성공
upload.html
<body>
<p>{{value}}</p>
<p>{{data_list[0]}}</p>
<p>{{data_list[1][0]}}</p>
<p>{{data_list[2][0]}}</p>
</body>
</html>
render_template에서 받은 매개변수를 이용하여 중괄호로 감싸서 사용한다.
문제점: 한글 같은 경우는 인식이 되지 않아 원래의 글자를 가져 올 수 없는 현상 발생
해결방법1
- db연결 부분에서 charset="utf8" 확인
해결방법2:
- 기본 언어셋 변경하기
db.query("set character_set_connection=utf8;")
db.query("set character_set_server=utf8;")
db.query("set character_set_client=utf8;")
db.query("set character_set_results=utf8;")
db.query("set character_set_database=utf8;")
'Flask' 카테고리의 다른 글
[Flask] 기본구조 (0) | 2023.03.17 |
---|