發布時間: 2021-08-12 09:13:37
Django在模板引擎中提供了各種機制來幫助我們實現這一目標。在本教程中,我將說明如何使用Django內置模板標記塊,擴展和包含來使模板易于維護。
準備工作:
1、Python 3.6
2、Django 2.2
3、AdminLTE 3.0.5
我們目標是將模板文件有效組織起來,避免重復的代碼引用,我們分四個步驟來實現。
將模板分為多個部分,我們知道除了菜單和內容外,其他所有內容都是可重復的。我們將制作一個基本模板來容納那些常見的部分,如圖:
在項目文件夾中創建一個文件夾模板。在其中創建一個base.html。將所有常見的片段添加到其中。只需復制并粘貼以下內容,僅是load.html和index.html共享的一部分代碼。
{% load static %} <!DOCTYPE html> <!-- This is a starter template page. Use this page to start your new project from scratch. This page gets rid of all links and provides the needed markup only. --> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <title>AdminLTE 3 | Starter</title> <!-- Font Awesome Icons --> <link rel="stylesheet" href="{% static 'plugins/fontawesome-free/css/all.min.css' %}"> <!-- Theme style --> <link rel="stylesheet" href="{% static 'dist/css/adminlte.min.css' %}"> <!-- Google Font: Source Sans Pro --> <link rel="stylesheet"> </head> <body class="hold-transition sidebar-mini"> <div class="wrapper"> <!-- Navbar --> <nav class="main-header navbar navbar-expand navbar-white navbar-light"> <!-- Left navbar links --> <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a> </li> <li class="nav-item d-none d-sm-inline-block"> <a href="index3.html" class="nav-link">Home</a> </li> <li class="nav-item d-none d-sm-inline-block"> <a href="#" class="nav-link">Contact</a> </li> </ul> <!-- SEARCH FORM --> <form class="form-inline ml-3"> <div class="input-group input-group-sm"> <input class="form-control form-control-navbar" type="search" placeholder="Search" aria-label="Search"> <div class="input-group-append"> <button class="btn btn-navbar" type="submit"> <i class="fas fa-search"></i> </button> </div> </div> </form> <!-- Right navbar links --> <ul class="navbar-nav ml-auto"> <!-- Messages Dropdown Menu --> <li class="nav-item dropdown"> <a class="nav-link" data-toggle="dropdown" href="#"> <i class="far fa-comments"></i> <span class="badge badge-danger navbar-badge">3</span> </a> <div class="dropdown-menu dropdown-menu-lg dropdown-menu-right"> <a href="#" class="dropdown-item"> <!-- Message Start --> <div class="media"> <img src="{% static 'dist/img/user1-128x128.jpg' %}" alt="User Avatar" class="img-size-50 mr-3 img-circle"> <div class="media-body"> <h3 class="dropdown-item-title"> Brad Diesel <span class="float-right text-sm text-danger"><i class="fas fa-star"></i></span> </h3> <p class="text-sm">Call me whenever you can...</p> <p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p> </div> </div> <!-- Message End --> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <!-- Message Start --> <div class="media"> <img src="{% static 'dist/img/user8-128x128.jpg' %}" alt="User Avatar" class="img-size-50 img-circle mr-3"> <div class="media-body"> <h3 class="dropdown-item-title"> John Pierce <span class="float-right text-sm text-muted"><i class="fas fa-star"></i></span> </h3> <p class="text-sm">I got your message bro</p> <p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p> </div> </div> <!-- Message End --> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <!-- Message Start --> <div class="media"> <img src="{% static 'dist/img/user3-128x128.jpg' %}" alt="User Avatar" class="img-size-50 img-circle mr-3"> <div class="media-body"> <h3 class="dropdown-item-title"> Nora Silvester <span class="float-right text-sm text-warning"><i class="fas fa-star"></i></span> </h3> <p class="text-sm">The subject goes here</p> <p class="text-sm text-muted"><i class="far fa-clock mr-1"></i> 4 Hours Ago</p> </div> </div> <!-- Message End --> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item dropdown-footer">See All Messages</a> </div> </li> <!-- Notifications Dropdown Menu --> <li class="nav-item dropdown"> <a class="nav-link" data-toggle="dropdown" href="#"> <i class="far fa-bell"></i> <span class="badge badge-warning navbar-badge">15</span> </a> <div class="dropdown-menu dropdown-menu-lg dropdown-menu-right"> <span class="dropdown-header">15 Notifications</span> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <i class="fas fa-envelope mr-2"></i> 4 new messages <span class="float-right text-muted text-sm">3 mins</span> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <i class="fas fa-users mr-2"></i> 8 friend requests <span class="float-right text-muted text-sm">12 hours</span> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item"> <i class="fas fa-file mr-2"></i> 3 new reports <span class="float-right text-muted text-sm">2 days</span> </a> <div class="dropdown-divider"></div> <a href="#" class="dropdown-item dropdown-footer">See All Notifications</a> </div> </li> <li class="nav-item"> <a class="nav-link" data-widget="control-sidebar" data-slide="true" href="#" role="button"><i class="fas fa-th-large"></i></a> </li> </ul> </nav> <!-- /.navbar --> <!-- Main Sidebar Container --> <aside class="main-sidebar sidebar-dark-primary elevation-4"> <!-- Brand Logo --> <a href="{% url 'home:landing' %}" class="brand-link"> <img src="{% static 'dist/img/AdminLTELogo.png' %}" alt="AdminLTE Logo" class="brand-image img-circle elevation-3" style="opacity: .8"> <span class="brand-text font-weight-light">AdminLTE 3</span> </a> <!-- Sidebar --> <div class="sidebar"> <!-- Sidebar user panel (optional) --> <div class="user-panel mt-3 pb-3 mb-3 d-flex"> <div class="image"> <img src="{% static 'dist/img/user2-160x160.jpg' %}" class="img-circle elevation-2" alt="User Image"> </div> <div class="info"> <a href="#" class="d-block">Alexander Pierce</a> </div> </div> <!-- Sidebar Menu --> {% block sidebar %}{% endblock %} <!-- /.sidebar-menu --> </div> <!-- /.sidebar --> </aside> <!-- Content Wrapper. Contains page content --> {% block content_wrapper %}{% endblock %} <!-- /.content-wrapper --> <!-- Control Sidebar --> <aside class="control-sidebar control-sidebar-dark"> <!-- Control sidebar content goes here --> <div class="p-3"> <h5>Title</h5> <p>Sidebar content</p> </div> </aside> <!-- /.control-sidebar --> <!-- Main Footer --> <footer class="main-footer"> <!-- To the right --> <div class="float-right d-none d-sm-inline"> Anything you want </div> <!-- Default to the left --> <strong>Copyright © 2014-2019 <a >AdminLTE.io</a>.</strong> All rights reserved. </footer> </div> <!-- ./wrapper --> <!-- REQUIRED SCRIPTS --> <!-- jQuery --> <script src="{% static 'plugins/jquery/jquery.min.js' %}"></script> <!-- Bootstrap 4 --> <script src="{% static 'plugins/bootstrap/js/bootstrap.bundle.min.js' %}"></script> <!-- AdminLTE App --> <script src="{% static 'dist/js/adminlte.min.js' %}"></script> </body> </html>
請注意,塊content_wrapper用于呈現每個頁面的自定義內容。
由于我們在上一步中創建了base.html,因此不再需要將通用代碼保留在Landing.html和home.html中。我們應該得到如下結果。
<div class="content-wrapper"> <!-- Content Header (Page header) --> <div class="content-header"> <div class="container-fluid"> <div class="row mb-2"> <div class="col-sm-6"> <h1 class="m-0 text-dark">Polls Index Page</h1> </div><!-- /.col --> <div class="col-sm-6"> <ol class="breadcrumb float-sm-right"> <li class="breadcrumb-item"><a href="#">Home</a></li> <li class="breadcrumb-item active">Polls</li> </ol> </div><!-- /.col --> </div><!-- /.row --> </div><!-- /.container-fluid --> </div> <!-- /.content-header --> <!-- Main content --> <div class="content"> <div class="container-fluid"> <div class="row"> <div class="col-lg-6"> <div class="card"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div> <div class="card card-primary card-outline"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div><!-- /.card --> <!-- general form elements disabled --> <div class="card card-primary card-outline"> <div class="card-header"> <h3 class="card-title">General Elements</h3> </div> <!-- /.card-header --> <div class="card-body"> <form role="form"> <div class="row"> <div class="col-sm-6"> <!-- text input --> <div class="form-group"> <label>Text</label> <input type="text" class="form-control" placeholder="Enter ..."> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Text Disabled</label> <input type="text" class="form-control" placeholder="Enter ..." disabled> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <!-- textarea --> <div class="form-group"> <label>Textarea</label> <textarea class="form-control" rows="3" placeholder="Enter ..."></textarea> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Textarea Disabled</label> <textarea class="form-control" rows="3" placeholder="Enter ..." disabled></textarea> </div> </div> </div> <!-- input states --> <div class="form-group"> <label class="col-form-label" for="inputSuccess"><i class="fas fa-check"></i> Input with success</label> <input type="text" class="form-control is-valid" id="inputSuccess" placeholder="Enter ..."> </div> <div class="form-group"> <label class="col-form-label" for="inputWarning"><i class="far fa-bell"></i> Input with warning</label> <input type="text" class="form-control is-warning" id="inputWarning" placeholder="Enter ..."> </div> <div class="form-group"> <label class="col-form-label" for="inputError"><i class="far fa-times-circle"></i> Input with error</label> <input type="text" class="form-control is-invalid" id="inputError" placeholder="Enter ..."> </div> <div class="row"> <div class="col-sm-6"> <!-- checkbox --> <div class="form-group"> <div class="form-check"> <input class="form-check-input" type="checkbox"> <label class="form-check-label">Checkbox</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" checked> <label class="form-check-label">Checkbox checked</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" disabled> <label class="form-check-label">Checkbox disabled</label> </div> </div> </div> <div class="col-sm-6"> <!-- radio --> <div class="form-group"> <div class="form-check"> <input class="form-check-input" type="radio" name="radio1"> <label class="form-check-label">Radio</label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="radio1" checked> <label class="form-check-label">Radio checked</label> </div> <div class="form-check"> <input class="form-check-input" type="radio" disabled> <label class="form-check-label">Radio disabled</label> </div> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <!-- select --> <div class="form-group"> <label>Select</label> <select class="form-control"> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Select Disabled</label> <select class="form-control" disabled> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <!-- Select multiple--> <div class="form-group"> <label>Select Multiple</label> <select multiple class="form-control"> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Select Multiple Disabled</label> <select multiple class="form-control" disabled> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> </div> </form> </div> <!-- /.card-body --> </div> <!-- /.card --> </div> <!-- /.col-md-6 --> <div class="col-lg-6"> <div class="card"> <div class="card-header"> <h5 class="m-0">Featured</h5> </div> <div class="card-body"> <h6 class="card-title">Special title treatment</h6> <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> </div> <div class="card card-primary card-outline"> <div class="card-header"> <h5 class="m-0">Featured</h5> </div> <div class="card-body"> <h6 class="card-title">Special title treatment</h6> <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> </div> </div> <!-- /.col-md-6 --> </div> <!-- /.row --> </div><!-- /.container-fluid --> </div> <!-- /.content --> </div> landing.html頁面代碼: <div class="content-wrapper"> <!-- Content Header (Page header) --> <div class="content-header"> <div class="container-fluid"> <div class="row mb-2"> <div class="col-sm-6"> <h1 class="m-0 text-dark">Home Landing Page</h1> </div><!-- /.col --> <div class="col-sm-6"> <ol class="breadcrumb float-sm-right"> <li class="breadcrumb-item"><a href="#">Landing Page</a></li> </ol> </div><!-- /.col --> </div><!-- /.row --> </div><!-- /.container-fluid --> </div> <!-- /.content-header --> <!-- Main content --> <div class="content"> <div class="container-fluid"> <div class="row"> <div class="col-lg-6"> <div class="card"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div> <div class="card card-primary card-outline"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div><!-- /.card --> </div> <div class="col-md-6"> <!-- general form elements disabled --> <div class="card card-warning"> <div class="card-header"> <h3 class="card-title">General Elements</h3> </div> <!-- /.card-header --> <div class="card-body"> <form role="form"> <div class="row"> <div class="col-sm-6"> <!-- text input --> <div class="form-group"> <label>Text</label> <input type="text" class="form-control" placeholder="Enter ..."> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Text Disabled</label> <input type="text" class="form-control" placeholder="Enter ..." disabled> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <!-- textarea --> <div class="form-group"> <label>Textarea</label> <textarea class="form-control" rows="3" placeholder="Enter ..."></textarea> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Textarea Disabled</label> <textarea class="form-control" rows="3" placeholder="Enter ..." disabled></textarea> </div> </div> </div> <!-- input states --> <div class="form-group"> <label class="col-form-label" for="inputSuccess"><i class="fas fa-check"></i> Input with success</label> <input type="text" class="form-control is-valid" id="inputSuccess" placeholder="Enter ..."> </div> <div class="form-group"> <label class="col-form-label" for="inputWarning"><i class="far fa-bell"></i> Input with warning</label> <input type="text" class="form-control is-warning" id="inputWarning" placeholder="Enter ..."> </div> <div class="form-group"> <label class="col-form-label" for="inputError"><i class="far fa-times-circle"></i> Input with error</label> <input type="text" class="form-control is-invalid" id="inputError" placeholder="Enter ..."> </div> <div class="row"> <div class="col-sm-6"> <!-- checkbox --> <div class="form-group"> <div class="form-check"> <input class="form-check-input" type="checkbox"> <label class="form-check-label">Checkbox</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" checked> <label class="form-check-label">Checkbox checked</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" disabled> <label class="form-check-label">Checkbox disabled</label> </div> </div> </div> <div class="col-sm-6"> <!-- radio --> <div class="form-group"> <div class="form-check"> <input class="form-check-input" type="radio" name="radio1"> <label class="form-check-label">Radio</label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="radio1" checked> <label class="form-check-label">Radio checked</label> </div> <div class="form-check"> <input class="form-check-input" type="radio" disabled> <label class="form-check-label">Radio disabled</label> </div> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <!-- select --> <div class="form-group"> <label>Select</label> <select class="form-control"> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Select Disabled</label> <select class="form-control" disabled> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <!-- Select multiple--> <div class="form-group"> <label>Select Multiple</label> <select multiple class="form-control"> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Select Multiple Disabled</label> <select multiple class="form-control" disabled> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> </div> </form> </div> <!-- /.card-body --> </div> <!-- /.card --> </div> </div> </div><!-- /.container-fluid --> </div> <!-- /.content --> </div>
為了將base.html用作每個頁面的基礎模板,我們需要通過在模板的開頭使用{%extended‘base.html’%}來聲明base.html為“父”模板。最重要的是,不要忘記content_wrapper塊。將全部內容包裝到該塊中。我們應該得到如下結果。
landing.html: {% extends 'base.html' %} {% load static %} {% block content_wrapper %} <div class="content-wrapper"> . . . </div> {% endblock %} 在index.html: {% extends 'base.html' %} {% load static %} {% block content_wrapper %} <div class="content-wrapper"> . . . </div> {% endblock %}
現在我們可能會意識到,兩個模板中都存在相同的巨型形式。幾乎一半的代碼是它。由于此表單已在兩個模板中重復使用,因此我們將其維護在一個可以包含任何模板的地方。
在模板文件夾中創建一個文件夾advanced_forms。在advanced_forms文件夾中,創建如下的general_elements_form.html,代碼如下:
<form role="form"> <div class="row"> <div class="col-sm-6"> <!-- text input --> <div class="form-group"> <label>Text</label> <input type="text" class="form-control" placeholder="Enter ..."> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Text Disabled</label> <input type="text" class="form-control" placeholder="Enter ..." disabled> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <!-- textarea --> <div class="form-group"> <label>Textarea</label> <textarea class="form-control" rows="3" placeholder="Enter ..."></textarea> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Textarea Disabled</label> <textarea class="form-control" rows="3" placeholder="Enter ..." disabled></textarea> </div> </div> </div> <!-- input states --> <div class="form-group"> <label class="col-form-label" for="inputSuccess"><i class="fas fa-check"></i> Input with success</label> <input type="text" class="form-control is-valid" id="inputSuccess" placeholder="Enter ..."> </div> <div class="form-group"> <label class="col-form-label" for="inputWarning"><i class="far fa-bell"></i> Input with warning</label> <input type="text" class="form-control is-warning" id="inputWarning" placeholder="Enter ..."> </div> <div class="form-group"> <label class="col-form-label" for="inputError"><i class="far fa-times-circle"></i> Input with error</label> <input type="text" class="form-control is-invalid" id="inputError" placeholder="Enter ..."> </div> <div class="row"> <div class="col-sm-6"> <!-- checkbox --> <div class="form-group"> <div class="form-check"> <input class="form-check-input" type="checkbox"> <label class="form-check-label">Checkbox</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" checked> <label class="form-check-label">Checkbox checked</label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" disabled> <label class="form-check-label">Checkbox disabled</label> </div> </div> </div> <div class="col-sm-6"> <!-- radio --> <div class="form-group"> <div class="form-check"> <input class="form-check-input" type="radio" name="radio1"> <label class="form-check-label">Radio</label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="radio1" checked> <label class="form-check-label">Radio checked</label> </div> <div class="form-check"> <input class="form-check-input" type="radio" disabled> <label class="form-check-label">Radio disabled</label> </div> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <!-- select --> <div class="form-group"> <label>Select</label> <select class="form-control"> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Select Disabled</label> <select class="form-control" disabled> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> </div> <div class="row"> <div class="col-sm-6"> <!-- Select multiple--> <div class="form-group"> <label>Select Multiple</label> <select multiple class="form-control"> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> <div class="col-sm-6"> <div class="form-group"> <label>Select Multiple Disabled</label> <select multiple class="form-control" disabled> <option>option 1</option> <option>option 2</option> <option>option 3</option> <option>option 4</option> <option>option 5</option> </select> </div> </div> </div> </form>
刪除Landing.html和index.html中的多余表單代碼。使用{% include ‘advanced_forms/general_elements_form.html’ %}包含表單。設置好之后,這就是最終結果。
index.html: {% extends 'base.html' %} {% load static %} {% block content_wrapper %} <div class="content-wrapper"> <!-- Content Header (Page header) --> <div class="content-header"> <div class="container-fluid"> <div class="row mb-2"> <div class="col-sm-6"> <h1 class="m-0 text-dark">Polls Index Page</h1> </div><!-- /.col --> <div class="col-sm-6"> <ol class="breadcrumb float-sm-right"> <li class="breadcrumb-item"><a href="#">Home</a></li> <li class="breadcrumb-item active">Polls</li> </ol> </div><!-- /.col --> </div><!-- /.row --> </div><!-- /.container-fluid --> </div> <!-- /.content-header --> <!-- Main content --> <div class="content"> <div class="container-fluid"> <div class="row"> <div class="col-lg-6"> <div class="card"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div> <div class="card card-primary card-outline"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div><!-- /.card --> <!-- general form elements disabled --> <div class="card card-primary card-outline"> <div class="card-header"> <h3 class="card-title">General Elements</h3> </div> <!-- /.card-header --> <div class="card-body"> {% include 'advanced_forms/general_elements_form.html' %} </div> <!-- /.card-body --> </div> <!-- /.card --> </div> <!-- /.col-md-6 --> <div class="col-lg-6"> <div class="card"> <div class="card-header"> <h5 class="m-0">Featured</h5> </div> <div class="card-body"> <h6 class="card-title">Special title treatment</h6> <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> </div> <div class="card card-primary card-outline"> <div class="card-header"> <h5 class="m-0">Featured</h5> </div> <div class="card-body"> <h6 class="card-title">Special title treatment</h6> <p class="card-text">With supporting text below as a natural lead-in to additional content.</p> <a href="#" class="btn btn-primary">Go somewhere</a> </div> </div> </div> <!-- /.col-md-6 --> </div> <!-- /.row --> </div><!-- /.container-fluid --> </div> <!-- /.content --> </div> {% endblock %} loading.html: {% extends 'base.html' %} {% load static %} {% block content_wrapper %} <div class="content-wrapper"> <!-- Content Header (Page header) --> <div class="content-header"> <div class="container-fluid"> <div class="row mb-2"> <div class="col-sm-6"> <h1 class="m-0 text-dark">Home Landing Page</h1> </div><!-- /.col --> <div class="col-sm-6"> <ol class="breadcrumb float-sm-right"> <li class="breadcrumb-item"><a href="#">Landing Page</a></li> </ol> </div><!-- /.col --> </div><!-- /.row --> </div><!-- /.container-fluid --> </div> <!-- /.content-header --> <!-- Main content --> <div class="content"> <div class="container-fluid"> <div class="row"> <div class="col-lg-6"> <div class="card"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div> <div class="card card-primary card-outline"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text"> Some quick example text to build on the card title and make up the bulk of the card's content. </p> <a href="#" class="card-link">Card link</a> <a href="#" class="card-link">Another link</a> </div> </div><!-- /.card --> </div> <div class="col-md-6"> <!-- general form elements disabled --> <div class="card card-warning"> <div class="card-header"> <h3 class="card-title">General Elements</h3> </div> <!-- /.card-header --> <div class="card-body"> {% include 'advanced_forms/general_elements_form.html' %} </div> <!-- /.card-body --> </div> <!-- /.card --> </div> </div> </div><!-- /.container-fluid --> </div> <!-- /.content --> </div> {% endblock %}
現在,讓我們再次重新啟動項目。屏幕上沒有任何變化。但是從整體結構上,項目變得更易于維護。
上一篇: 什么是運營商網絡
下一篇: pmp報考資格