개발로 자기계발
article thumbnail
728x90

프로젝트 디렉터리 구조

fastapi
todoapp
main.py

database.py

models.py

todos.db
templates static routers
todo
css js
home.html

add-todo.html

edit-todo.html

login.html

register.html

layout.html

navbar.html
base.css

bootstrap.css
bootstrap.js

jquery-slim.js

popper.js
auth.py

todos.py

 

추가적으로 코드를 분리해서 간결하게 만들어보자
templates 디렉터리 하위에 navbar.html 생성

 

1. navbar.html 수정

layout.html에서 navbar 부분만 잘라내서 붙인다.

<div>
    <nav class="navbar navbar-expand-md navbar-dark main-color fixed-top">
        <a class="navbar-brand" href="#">Todo App</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
                aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarNav">
            <ul class="navbar-nav">
                <li class="nav-item active">
                    <a class="nav-link" href="#">Home </a>
                </li>
            </ul>
        </div>
    </nav>
</div>

 

2. layout.html 수정

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" type="text/css" href="{{ url_for('static', path='/todo/css/base.css') }}">
    <link rel="stylesheet" type="text/css" href="{{ url_for('static', path='/todo/css/bootstrap.css') }}">
	<meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

	<title>TodoApp</title>
</head>
<body>
	{% include 'navbar.html' %}

	{% block content %}

	{% endblock %}

	<!--순서상 jquery를 먼저-->
	<script src="{{ url_for('static', path='/todo/js/jquery-slim.js') }}"></script>
	<script src="{{ url_for('static', path='/todo/js/popper.js') }}"></script>
	<script src="{{ url_for('static', path='/todo/js/bootstrap.js') }}"></script>

</body>
</html>

앞서 수행했던 레이아웃 작업과 똑같이 home.html이 호출될 때 navbar가 포함돼서 렌더링 된다.

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)