<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何設(shè)計(jì)組織Django模板?

          共 108991字,需瀏覽 218分鐘

           ·

          2021-07-22 08:20

          在本文中,我將介紹在Django應(yīng)用程序開(kāi)發(fā)中設(shè)計(jì)Django模板的方法。目的是保持Django應(yīng)用程序的UI部分井井有條,并避免重復(fù)編碼。Django在模板引擎中提供了各種機(jī)制來(lái)幫助我們實(shí)現(xiàn)這一目標(biāo)。在本教程中,我將說(shuō)明如何使用Django內(nèi)置模板標(biāo)記塊,擴(kuò)展和包含來(lái)使模板易于維護(hù)。

          準(zhǔn)備工作:

          1、Python 3.6

          2、Django 2.2

          3、AdminLTE 3.0.5

          我們目標(biāo)是將模板文件有效組織起來(lái),避免重復(fù)的代碼引用,我們分四個(gè)步驟來(lái)實(shí)現(xiàn)。

          步驟1/4:base.html

          將模板分為多個(gè)部分,我們知道除了菜單和內(nèi)容外,其他所有內(nèi)容都是可重復(fù)的。我們將制作一個(gè)基本模板來(lái)容納那些常見(jiàn)的部分,如圖:

          在項(xiàng)目文件夾中創(chuàng)建一個(gè)文件夾模板。在其中創(chuàng)建一個(gè)base.html。將所有常見(jiàn)的片段添加到其中。只需復(fù)制并粘貼以下內(nèi)容,僅是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 href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700" 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 &copy; 2014-2019 <a href="https://adminlte.io">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>

          請(qǐng)注意,塊content_wrapper用于呈現(xiàn)每個(gè)頁(yè)面的自定義內(nèi)容。

          步驟2/4:刪除冗余的通用代碼

          由于我們?cè)谏弦徊街袆?chuàng)建了base.html,因此不再需要將通用代碼保留在Landing.html和home.html中。我們應(yīng)該得到如下結(jié)果。

          <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頁(yè)面代碼:

          <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>

          步驟3/4:繼承base.html

          為了將base.html用作每個(gè)頁(yè)面的基礎(chǔ)模板,我們需要通過(guò)在模板的開(kāi)頭使用{%extended‘base.html’%}來(lái)聲明base.html為“父”模板。最重要的是,不要忘記content_wrapper塊。將全部?jī)?nèi)容包裝到該塊中。我們應(yīng)該得到如下結(jié)果。

          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 %}

          步驟4/4:將常見(jiàn)的內(nèi)容單獨(dú)存放

          現(xiàn)在我們可能會(huì)意識(shí)到,兩個(gè)模板中都存在相同的巨型形式。幾乎一半的代碼是它。由于此表單已在兩個(gè)模板中重復(fù)使用,因此我們將其維護(hù)在一個(gè)可以包含任何模板的地方。

          在模板文件夾中創(chuàng)建一個(gè)文件夾advanced_forms。在advanced_forms文件夾中,創(chuàng)建如下的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 ‘a(chǎn)dvanced_forms/general_elements_form.html’ %}包含表單。設(shè)置好之后,這就是最終結(jié)果。

          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 %}

          現(xiàn)在,讓我們?cè)俅沃匦聠?dòng)項(xiàng)目。屏幕上沒(méi)有任何變化。但是從整體結(jié)構(gòu)上,項(xiàng)目變得更易于維護(hù)。努力將是值得的(笑臉) 這是我們完成增強(qiáng)后的文件架構(gòu)的目錄結(jié)構(gòu)。我用黃色突出顯示了模板。

          寫(xiě)在最后,模板是Web應(yīng)用程序中的核心部分之一。不要寫(xiě)重復(fù)代碼,我認(rèn)為該原則適用于前端和后端開(kāi)發(fā),這樣我們才可以制作出可伸縮的應(yīng)用程序。

          文章轉(zhuǎn)載:Python運(yùn)維技術(shù)
          (版權(quán)歸原作者所有,侵刪)

          點(diǎn)擊下方“閱讀原文”查看更多

          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青草久久視頻網站 | 91AV片| 天天撸综合网 | 在线无码视频播放 | 中国成人黄色网址 |