파이썬 Flask 사용법 - 3) Redirect 와 Forward

파이썬 Flask 사용법 - 3) Redirect 와 Forward

728x90

1. Redirect

from flask import Flask, redirect app = Flask(__name__) @app.route('/redirect', methods=['GET','POST']) def hello(): return redirect("https://shanepark.tistory.com") if __name__== "__main__": app.run(host='0.0.0.0', port=80)

redirect는 정말 간단합니다. return redirect 하며 괄호 안에 redirect 시킬 주소를 입력하면 끝입니다.

서버를 실행 한 뒤에, 지정해둔 주소 ( app.route 안의 주소 ) 를 웹브라우저에 입력 하면,

바로 지정해둔 페이지로 이동하는 것을 확인 할 수 있습니다.

2. Forward

forward는 조금 더 복잡합니다. forward로 이동하며 데이터도 가지고 가게끔 코드를 작성했습니다.

from flask import Flask from flask.templating import render_template app = Flask(__name__) @app.route('/forward') def hello(): return render_template("hello.html", name='shane', list=list) if __name__== "__main__": app.run(host='0.0.0.0', port=80)

render_template 을 사용했는데요, 이를 사용하기 위해서는 해당 파이썬 코드가 저장된 경로에 templates 라는 폴더를 만든 후에, 해당 폴더 내에 forward 할 파일을 작성해야 합니다.

서버를 실행할 파이썬 코드는 helloflask03forward01.py 입니다. 같은 경로상에 templates 라는 폴더를 만들어 hello.html 을 만들었습니다.

Insert title here Hello ! welcome to templates, {{name}}

html 코드에 {{파라미터이름}} 을 넣어두면, 해당 파라미터를 텍스트로 바로 출력해줍니다.

위의 helloflask03forward01.py 를 실행 한 뒤에, http://0.0.0.0/forward 주소를 웹브라우저에 실행 해 보았습니다.

정상적으로 hello.html 파일로 forwarding 되며, 지정한 파라미터도 잘 넘겨온 것을 확인 할 수 있습니다.

2_2 forward 로 list 넘기기

단순한 문자열 뿐만 아니라 html에 forwarding 방식으로 이동하며 list 객체를 넘길 수도 있습니다.

shanepark.tistory.com/54?category=1191756

위의 내용에서 크롤링 해두었던 주식 데이터를 불러와서 특정 주식 종목의 가격 변화를 ol 태그안에 입력해보도록 하겠습니다.

from flask import Flask from flask.templating import render_template import pymongo app = Flask(__name__) @app.route('/samsumgStock') def mylist(): # DB 정보 설정 myclient = pymongo.MongoClient("mongodb://localhost:27017") mydb = myclient["python"] mycol = mydb["mystock02"] # DB에서 원하는 종목 가격 변화 불러오기 stockName = '삼성전자'; arr = [] for x in mycol.find({},{'_id':0,stockName:1}): arr.append(x[stockName]) return render_template("list02.html", name='shane', list=arr) if __name__== "__main__": app.run(host='0.0.0.0', port=80)

주식 데이터로 그래프를 그려보기 위해 작성했던 코드에서, 가격 데이터를 배열에 저장하는 반복문만 떼어왔습니다.

arr 에는 위에서 지정한 주식 종목의 가격 데이터가 저장되는데요, 혹시 DB를 이용하지 않고 그냥 일반적인 배열을 보내는 연습을 해보고 싶다면, DB 정보설정하는 부분을 지우고, arr = ['홍길동','세종대왕','유관순'] 등 으로 저장한 뒤에 아래 for문을 지워버리고 코드를 그대로 사용해도 됩니다.

templates 폴더 안에는 list02.html 파일을 아래와 같이 준비해둡니다. 전달받은 매개면수 list 내의 데이터를 반복문을 통해 받아내며 li 태그 내에 입력해내는 코드입니다.

Insert title here Hello ! welcome to templates! Here's stock price {% for price in list%} {{price}} {% endfor %}

위의 파이선 서버를 실행 한 뒤에, 주소창에 http://0.0.0.0/samsumgStock 를 실행해보면,

위와 같은 결과를 받아 올 수 있습니다. 20초 간격으로 20번만 크롤링 한 데이터다 보니, 변동 폭이 그리 크지 않습니다.

728x90

from http://shanepark.tistory.com/58 by ccl(A) rewrite - 2021-03-23 13:00:14