在本文中,我將介紹在Django應用程序開發中設計Django模板的方法。目的是保持Django應用程序的UI部分井井有條,并避免重復編碼。Django在模板引擎中提供了各種機制來幫助我們實現這一目標。在本教程中,我將說明如何使用Django內置模板標記塊,擴展和包含來使模板易于維護。
準備工作:
1、Python 3.6
2、Django 2.2
我們目標是將模板文件有效組織起來,避免重復的代碼引用,我們分四個步驟來實現。
步驟1/4:base.html
將模板分為多個部分,我們知道除了菜單和內容外,其他所有內容都是可重復的。我們將制作一個基本模板來容納那些常見的部分
在項目文件夾中創建一個文件夾模板。在其中創建一個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 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 ? 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》
請注意,塊content_wrapper用于呈現每個頁面的自定義內容。
步驟2/4:刪除冗余的通用代碼
由于我們在上一步中創建了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》
步驟3/4:繼承base.html
為了將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 %}
步驟4/4:將常見的內容單獨存放
現在我們可能會意識到,兩個模板中都存在相同的巨型形式。幾乎一半的代碼是它。由于此表單已在兩個模板中重復使用,因此我們將其維護在一個可以包含任何模板的地方。
在模板文件夾中創建一個文件夾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 %}
現在,讓我們再次重新啟動項目。屏幕上沒有任何變化。但是從整體結構上,項目變得更易于維護。努力將是值得的(笑臉)這是我們完成增強后的文件架構的目錄結構。我用黃色突出顯示了模板。
寫在最后,模板是Web應用程序中的核心部分之一。不要寫重復代碼,我認為該原則適用于前端和后端開發,這樣我們才可以制作出可伸縮的應用程序。
文章轉載:Python運維技術
(版權歸原作者所有,侵刪)
編輯:jq
-
Django
+關注
關注
0文章
44瀏覽量
10388
原文標題:如何設計組織Django模板?
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論