반원 블로그

Flask 자료 정리 05 - 부트스트랩 이용한 JinJa2 템플릿 본문

2018~/Flask 자료 정리

Flask 자료 정리 05 - 부트스트랩 이용한 JinJa2 템플릿

반원_SemiCircle 2019. 10. 17. 01:11

간단한 네비게이션 바 만들기(부트스트랩)

  • 이전 프로젝트를 복사하여 다음처럼 정리했다.

예제 04/templates/layout.html

<!DOCTYPE html>
<html>
   <head>
       <title>03/04.html</title>
       <meta name="viewport" content="width=device=width, initial-scaile = 1.0">
       <link href = "http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel = "stylesheet" media="screen">
       <style type="text/css">
           .container{
               max-width : 500px;
               padding-top : 10px;
               padding-left : 10px;
               border:solid 5px black;
           }

           h3 {
               color:blue
           }
       </style>
   </head>

   <body>
   <nav class="navbar navbar-inverse" role="navigation">
       <div class = "container">
           <div class = "navbar-header">
               <a class="navbar-brand" href="/">Logo 영역</a>
           </div>
       </div>
   </nav>
       <div class="wrap">
           <h4> 기본 템플릿 시작 </h4>
           {% block content %} {% endblock %}
           <h4> 기본 템플릿 마침</h4>
       </div>
   </body>

</html>
<!--설명
6 : 부트스트랩 호출
22~28 : nav 태그로 상단바 영역을 지정한다. class명은 부트스트랩에서 지정하는 값을 똑같이 사용한다.
여기서 사용한 container, navbar, navbar-inverse, navbar-header, navbar-brand 모두 포함된다.

8 ~13, 23 : 원래 부트스트랩의 디자인이 적용되야하나, 8~13때문에 테두리등이 적용된다.
23 : container-fluid 로 대체하면 왼쪽 여백이 없다.
-->

예제 04/templates/children.html

{% extends "layout.html" %}
{% block content %}
   <h4>자식 템플릿의 시작</h4>

   <p> 사용자 : {{userName}} </p>
   <p> 3번째 상품 : {{goodsList[2]}}  </p>
   <p> 전체 상품 목록</p>
   <ul>
       {% for goods in goodsList %}
       <li>{{goods}}</li>
       {% endfor %}
   </ul>

{% endblock %}

예제 04/01.py

from flask import Flask, render_template

#앱 생성
app= Flask(__name__)

#라우트
@app.route('/')
def temp_test():
   return render_template('children.html',userName="반원",goodsList=['밤','호박','사과','배'])

if __name__=="__main__":
   app.run(debug=True)

(추가 예제) - layout.html 수정

  • 만일 layout.html에서 container 스타일을 주석처리하면 다음처럼 나온다.

<!DOCTYPE html>
<html>
   <head>
       <title>03/04.html</title>
       <meta name="viewport" content="width=device=width, initial-scaile = 1.0">
       <link href = "http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel = "stylesheet" media="screen">
       <style type="text/css">
           <!--.container{-->
               <!--max-width : 500px;-->
               <!--padding-top : 10px;-->
               <!--padding-left : 10px;-->
               <!--border:solid 5px black;-->
           <!--}-->

           h3 {
               color:blue
           }
       </style>
   </head>

   <body>
   <nav class="navbar navbar-inverse" role="navigation">
       <div class = "container">
           <div class = "navbar-header">
               <a class="navbar-brand" href="/">Logo 영역</a>
           </div>
       </div>
   </nav>
       <div class="wrap">
           <h4> 기본 템플릿 시작 </h4>
           {% block content %} {% endblock %}
           <h4> 기본 템플릿 마침</h4>
       </div>
   </body>

</html>
<!--설명
6 : 부트스트랩 호출
22~28 : nav 태그로 상단바 영역을 지정한다. class명은 부트스트랩에서 지정하는 값을 똑같이 사용한다.
여기서 사용한 container, navbar, navbar-inverse, navbar-header, navbar-brand 모두 포함된다.

8 ~13, 23 : 원래 부트스트랩의 디자인이 적용되야하나, 8~13때문에 테두리등이 적용된다.
23 : container-fluid 로 대체하면 왼쪽 여백이 없다.
-->

추가 주석부분을 확인하며 부트스트랩 활용을 연습해보자.


<!DOCTYPE html>
<html>
   <head>
       <title>03/04.html</title>
       <meta name="viewport" content="width=device=width, initial-scaile = 1.0">
       <link href = "http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel = "stylesheet" media="screen">
       <style type="text/css">
           <!--.container{-->
               <!--max-width : 500px;-->
               <!--padding-top : 10px;-->
               <!--padding-left : 10px;-->
               <!--border:solid 5px black;-->
           <!--}-->

           h3 {
               color:blue
           }
       </style>
   </head>

   <body>
   <nav class="navbar navbar-inverse" role="navigation">
       <div class = "container-fluid"> <!--수정-->
           <div class = "navbar-header">
               <a class="navbar-brand" href="/">Logo 영역</a>
           </div>
       </div>

       <!--추가-->
       <div class = "collapse navbar-collapse">
           <ul class = "nav navbar-nav">
               <li class="active"><a href="#">메뉴 1</a></li>
               <li><a href="#">메뉴 2</a></li>
               <li><a href="#">메뉴 3</a></li>
               <li><a href="#">메뉴 4</a></li>
           </ul>

           <form class = "navbar-form navbar-left" role="search">
               <div class="form-group">
                   <input type="text" class="form-control" placeholder="키워드 검색">
               </div>
               <button type="submit" class = "btn btn-default">검색</button>
           </form>

           <ul class="nav navbar-nav navbar-right">
               <li><a href="#">회원가입</a></li>
               <li class ="dropdown">
                   <a href="#" class="dropdown-toggle" data-toggle="dropdown">사용자<b class="caret"></b></a>
                   <ul class="dropdown-menu">
                       <li><a href="#">로그인</a></li>
                       <li><a href="#">고객센터</a></li>
                       <li class="divider"></li>
                       <li><a href="#">전원끄기</a></li>
                   </ul>
               </li>
           </ul>
       </div>


   </nav>
       <div class="wrap">
           <h4> 기본 템플릿 시작 </h4>
           {% block content %} {% endblock %}
           <h4> 기본 템플릿 마침</h4>
       </div>

       <!--추가-->
       <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
       <script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
   </body>

</html>
Comments