기타 공부/생활코딩 Python Flask Web Framework 노트정리

5. 홈페이지 구현

모항 2022. 10. 22. 22:07

 

간단한 홈페이지를 만들어보는 회차이다.

 

 

 

코드

 

강의에 나온 코드를 수정하여 완성한 코드는 아래와 같다.

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