FLASK

[FLASK] 홈페이지 구현

판다조아 2022. 11. 11. 09:58

 

 

이번엔 아래와 같이 HTML 코드를 작성하여
웹페이지를 표현해 보겠습니다!

 

from flask import Flask


app = Flask(__name__)


@app.route('/')
def index():
	return '''<!doctype html>
    <html>
    	<body>
        	<h1><a href="/">WEB</a></h1>
            <ol>
            	<li><a href="/read/1/">html</a></li>
                <li><a href="/read/1/">css</a></li>
                <li><a href="/read/1/">javascript</a></li>
            </ol>
            <h2>Welcome</h2>
            Hello, Web
        </body>
    </html>
    '''
    
    
@app.route('/create/')
def create():
    return 'Create'
    
@app.route('/read/<id>/')
def read(id):
    return 'Read '+id

 

 

실행하면 다음과 같은 웹페이지가 나옵니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

표시된 부분의 데이터를 분리해서

파이썬의 데이터 구조로 만들고 동적으로 표현해 보겠습니다.

 

 

 

 

 

 

 

 

 

 

topics = [
    {'id':1, 'title': 'html', 'body': 'html is ...'},
    {'id':2, 'title': 'css', 'body': 'css is ...'},
    {'id':3, 'title': 'javascript', 'body': 'javascript is ...'}
]

 

순서가 있는 데이터이므로(1, 2, 3)

리스트를 사용하고

제목, id, 클릭했을 때 나오는 내용은 딕셔너리로

topics라는 변수에 담았습니다.

 

 

 

 

 

 

 

 

 

 

@app.route('/')
def index():
    liTags = ''
    for topic in topics:
        liTags = liTags + f'<li><a href="/read/{topic["id"]}/">{topic["title"]}</a></li>'
    return f'''<!doctype html>
    <html>
        <body>
            <h1><a href="/">WEB</a><h1>
            </ol>
                {liTags}
            </ol>
            <h2>Welcome</h2>
            Hello, Web
        </body>
    </html>
    '''

 

위와 같이 코드를 수정합니다.

 

 

topics라는 변수에 있는 데이터들을 목록으로 표현하기 위해

반복문인 for문을 사용했습니다.

순회가 이루어질때 마다 liTags에 기존의 liTags를 더합니다.

 

<a>태그를 추가하여 링크를 걸고

/read/를 추가하여 클릭시

Read 1, Read 2, Read 3 문구가 출력되는 상세보기 페이지로 이동합니다.

 

기존 데이터 자리에 liTags를 넣어주고 실행하면

처음과 같은 웹페이지를 확인할 수 있습니다!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

목록을 클릭해 보면

상세페이지 또한 잘 나오는 것을 확인할 수 있습니다~!

 

 

 

 

 

 

 

 

 

 

 

※ (지금은 리스트와 딕셔너리를 이용한

메모리에 올라가 있는 데이터를 사용하고 있지만

일반적인 web framework에서는

데이터를 데이터베이스에 저장합니다 !!!

나중에는 데이터베이스에 데이터를 읽어오는 코드로 변경하여 사용해야 합니다.)

 

 

 

 

 

 

 

 

 

출처