본문 바로가기
Flask

[Flask] flask와 html 간의 변수 전달

by khc9154 2023. 3. 31.

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