플라스크를 이용해서 서버를 생성 시, URL에 변수를 추가하는 방법을 알아보았다.
<변수>로 데코레이터 내부에 입력해주고, 함수에 파라미터로 변수를 지정해서 사용할 수 있다.
@app.route('/username/<name>')
def night_world(name):
return f"Hello,{name}"
플라스크로 HTML 랜더링하기
return 반환문에 html 태그를 삽입할 수 있다.
@app.route('/')
def hello_world():
return '<h1>Hello, World!</h1>'
다른 태그도 연달아 입력이 가능하다.
@app.route('/')
def hello_world():
return'<h1>Hello, World!</h1><p>This is a paragraph</p>'
앞서 배운 데코레이션을 통해 html 코드를 입힐 수 있는 데코레이터를 만들어보았다.
볼드체와, 이탈릭, 밑줄을 추가할 수 있는 데코레이터이다.
def make_bold(function) :
def wrapper_function() :
return "<b>" + function() + "</b>"
return wrapper_function
def make_emphasis(function) :
def wrapper_function() :
return "<em>" + function() + "</em>"
return wrapper_function
def make_underlined(function) :
def wrapper_function() :
return "<u>" + function() + "</u>"
return wrapper_function
@app.route('/')
@make_bold
@make_emphasis
@make_underlined
def hello_world():
return "Hi!"
데코레이터의 파라미터를 다른 함수의 파라미터로 연결시키기 위해서는 *args와 **kwargs를 활용할 수 있다.
class User:
def __init__(self,name):
self.name = name
self.is_logged_in = False
def is_authenticated_decorator(function) :
def wrapper(*args) :
if args[0].is_logged_in == True :
function(args[0])
return wrapper
@is_authenticated_decorator
def created_blog_post(user) :
print(f"This is {user.name}'s new blog post.")
new_user = User("Chul")
new_user.is_logged_in = True
created_blog_post(new_user)
# 결과
This is Chul's new blog post.
마지막으로 한참 전에 만들었더 숫자 업다운 게임을 입혀보았다.
from flask import Flask
import random
app = Flask(__name__)
random_number = random.randint(0,9)
print(random_number)
@app.route('/')
def hello_world():
return '<h1>0에서 9까지 숫자를 맞춰보세요.</h1>' \\
''
@app.route('/<int:guess>')
def guess_number(guess):
if guess < random_number :
return '<h1>너무 작아요..</h1>' \\
''
elif guess > random_number :
return '<h1>너무 큰걸!</h1>' \\
''
else :
return '<h1>나를 찾았구나!</h1>' \\
''
if __name__ == "__main__" :
app.run(debug=True)