간단한 홈페이지를 만들어보는 회차이다.
코드
강의에 나온 코드를 수정하여 완성한 코드는 아래와 같다.
from flask import Flask
app = Flask(__name__)
topics = [
{'id': 1, 'title': 'A', 'content': 'This is page A.'},
{'id': 2, 'title': 'B', 'content': 'This is page B.'},
{'id': 3, 'title': 'C', 'content': 'This is page C.'}
]
# 메인 페이지
@app.route('/')
def index():
str= '' # html 코드를 담을 문자열
# for문을 사용하여 str의 내용을 만들기
for topic in topics:
str = str + f'<li><a href = "/read/{topic["id"]}/">{topic["title"]}</a></li>'
return f'''<!doctype html>
<html>
<body>
<h1><a href = "/">Main</a></h1>
<ol>
{str}
</ol>
</body>
</html>
'''
# A, B, C를 눌러 들어간 페이지
@app.route('/read/<id>/')
def read(id):
# URL에서 id 값 받아오기
num = int(id)
# 리스트의 인덱스는 0부터 시작하므로 1을 빼기
num = num -1
# num 값을 사용하여 content 값을 가져와 화면에 표시하기
return f'{topics[num]["content"]}'
app.run()
실행해보면 아래와 같이 잘 작동한다.
1. 메인 페이지
2. /read/1/
3. /read/2/
4. /read/3/
새로 알게 된 문법
1. f 뒤에 문자열 붙이기
문자열의 내용을 동적으로 (변수를 가져다 쓰는 등) 정해야 하는 상황에 사용한다.
동적으로 정해지는 부분을 {} 로 감싼다.
문자열이 한 줄일 경우
return f'{topics[num]["content"]}'
이렇게 작은따옴표 한 개의 쌍으로 작성하고,
문자열이 여러 줄일 경우
return f'''<!doctype html>
<html>
<body>
<h1><a href = "/">Main</a></h1>
<ol>
{str}
</ol>
</body>
</html>
'''
이렇게 작은따옴표 세 개의 쌍으로 작성한다.
2. 리스트
파이썬의 리스트는 []로 감싼다.
아래는 딕셔너리를 담은 리스트이다.
topics = [
{'id': 1, 'title': 'A', 'content': 'This is page A.'},
{'id': 2, 'title': 'B', 'content': 'This is page B.'},
{'id': 3, 'title': 'C', 'content': 'This is page C.'}
]
3. int()
문자열을 정수로 바꿀 때에 사용한다.
반대로 정수를 문자열로 바꿀 땐 str()을 쓴다.
아래는 URL에서 id를 문자열 형태로 받아오므로 정수로 바꾸기 위해 int(id)를 사용하는 코드이다.
@app.route('/read/<id>/')
def read(id):
# URL에서 id 값 받아오기
num = int(id)
# 리스트의 인덱스는 0부터 시작하므로 1을 빼기
num = num -1
# num 값을 사용하여 content 값을 가져와 화면에 표시하기
return f'{topics[num]["content"]}'
'기타 공부 > 생활코딩 Python Flask Web Framework 노트정리' 카테고리의 다른 글
7. 쓰기 (0) | 2022.10.24 |
---|---|
6. 읽기 (0) | 2022.10.22 |
4. 라우팅 (0) | 2022.10.22 |
3. 플라스크를 사용하는 이유 (0) | 2022.10.22 |
2. 나의 컴퓨터에 개발환경셋팅 (0) | 2022.10.21 |