一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在Django應(yīng)用程序開發(fā)中設(shè)計(jì)Django模板的方法

馬哥Linux運(yùn)維 ? 來源:Python運(yùn)維技術(shù) ? 作者:Python運(yùn)維技術(shù) ? 2021-07-29 15:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

準(zhǔn)備工作:

1、Python 3.6

2、Django 2.2

3、AdminLTE 3.0.5

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

步驟1/4:base.html

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

在項(xiàng)目文件夾中創(chuàng)建一個(gè)文件夾模板。在其中創(chuàng)建一個(gè)base.html。將所有常見的片段添加到其中。只需復(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 ? 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è)頁面的自定義內(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 。。?!薄?/p>

《/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 。。?!薄?/p>

《/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 。。?!薄?/p>

《/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 。。?!薄?/p>

《/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 。。?!薄?/p>

《/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 。。?!薄?/p>

《/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 。。?!薄?/p>

《/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è)頁面的基礎(chǔ)模板,我們需要通過在模板的開頭使用{%extended‘base.html’%}來聲明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:將常見的內(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 。。?!薄?/p>

《/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 。。?!薄?/p>

《/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 。。?!薄?/p>

《/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 ‘a(chǎn)dvanced_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 ‘a(chǎn)dvanced_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)目。屏幕上沒有任何變化。但是從整體結(jié)構(gòu)上,項(xiàng)目變得更易于維護(hù)。努力將是值得的(笑臉)這是我們完成增強(qiáng)后的文件架構(gòu)的目錄結(jié)構(gòu)。我用黃色突出顯示了模板。

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

文章轉(zhuǎn)載:Python運(yùn)維技術(shù)

(版權(quán)歸原作者所有,侵刪)

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Django
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    10649

原文標(biāo)題:如何設(shè)計(jì)組織Django模板?

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)問SX3實(shí)用程序提供的模板只能在開發(fā)板上使用嗎?

    SX3 實(shí)用程序提供的模板只能在開發(fā)板上使用嗎?
    發(fā)表于 05-09 06:47

    OpenVINO?運(yùn)行應(yīng)用程序失敗怎么解決?

    嘗試 OpenVINO? 運(yùn)行我的推理應(yīng)用程序失敗,并出現(xiàn)以下錯(cuò)誤: RuntimeError: Check \'false\' failed at src/core/src/runtime/ov_tensor.cpp:67
    發(fā)表于 03-05 10:29

    基于Django89的web框架代碼

    基于Django89的web框架代碼,超詳細(xì)
    發(fā)表于 02-10 15:38 ?0次下載

    基于HPM_SDK_ENV開發(fā)應(yīng)用程序的升級(jí)處理

    基于HPM_SDK_ENV開發(fā)應(yīng)用程序的方式HPM_SDK_ENV是先楫半導(dǎo)體MCU的Windows集成開發(fā)環(huán)境,其包含HPM_SDK,工具鏈,依賴工具(cmake,ninja,openocd等
    的頭像 發(fā)表于 02-08 13:38 ?1017次閱讀
    基于HPM_SDK_ENV<b class='flag-5'>開發(fā)</b><b class='flag-5'>應(yīng)用程序</b>的升級(jí)處理

    ANACONDA——關(guān)于發(fā)布數(shù)據(jù)應(yīng)用程序的新簡(jiǎn)單方法

    我們推出了一款用于發(fā)布數(shù)據(jù)應(yīng)用程序的開創(chuàng)性解決方案:具有 Panel 應(yīng)用程序部署功能的 Anaconda Cloud Notebooks。Panel 是一種開源 Python 工具,現(xiàn)在
    的頭像 發(fā)表于 01-17 11:39 ?430次閱讀
    ANACONDA——關(guān)于發(fā)布數(shù)據(jù)<b class='flag-5'>應(yīng)用程序</b>的新簡(jiǎn)單<b class='flag-5'>方法</b>

    低代碼敏捷開發(fā)的應(yīng)用

    低代碼平臺(tái)的定義 低代碼平臺(tái)提供了一個(gè)可視化的、拖放式的用戶界面,允許開發(fā)者通過圖形化的方式快速構(gòu)建應(yīng)用程序,而無需編寫大量的代碼。這些平臺(tái)通常包括預(yù)構(gòu)建的模板、組件和邏輯模塊,使得開發(fā)
    的頭像 發(fā)表于 01-07 09:58 ?449次閱讀

    技術(shù)升級(jí):探索華為云 EulerOS 與 Flexus X 實(shí)例如何完美融合快速部署 Django

    前言 在當(dāng)今云計(jì)算和大數(shù)據(jù)的時(shí)代,技術(shù)的迭代更新為企業(yè)帶來了無限可能。華為云,作為國內(nèi)領(lǐng)先的云服務(wù)提供商,始終致力于推動(dòng)技術(shù)進(jìn)步,為開發(fā)者提供更高效、更便捷的服務(wù)體驗(yàn)。本次 828 華為云征文活動(dòng)
    的頭像 發(fā)表于 12-25 17:50 ?491次閱讀
    技術(shù)升級(jí):探索華為云 EulerOS 與 Flexus X 實(shí)例如何完美融合快速部署 <b class='flag-5'>Django</b>

    android手機(jī)上emulate應(yīng)用程序方法

    。以下是一些Android手機(jī)上模擬應(yīng)用程序的具體方法和步驟: 一、使用Android Studio的模擬器 安裝Android Studio : 首先,你需要在電腦上安裝Andr
    的頭像 發(fā)表于 12-05 15:33 ?1216次閱讀

    AWTK-WEB 快速入門(2) - JS 應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用JS語言開發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新
    的頭像 發(fā)表于 12-05 01:04 ?502次閱讀
    AWTK-WEB 快速入門(2) - JS <b class='flag-5'>應(yīng)用程序</b>

    深入解析Django路由層:從基礎(chǔ)配置到高效設(shè)計(jì)的全攻略

    參數(shù)是正則表達(dá)式 只要第一個(gè)參數(shù)正則表達(dá)式能夠匹配到內(nèi)容,那么就會(huì)立刻停止往下匹配 直接執(zhí)行對(duì)應(yīng)的視圖函數(shù) 輸入url的時(shí)候默認(rèn)加斜杠 django內(nèi)部幫你做到重定向 一次匹配不行 url后面加斜杠
    的頭像 發(fā)表于 12-04 13:55 ?546次閱讀
    深入解析<b class='flag-5'>Django</b>路由層:從基礎(chǔ)配置到高效設(shè)計(jì)的全攻略

    AWTK-WEB 快速入門(1) - C 語言應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用C語言開發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新建
    的頭像 發(fā)表于 11-27 11:46 ?717次閱讀
    AWTK-WEB 快速入門(1) - C 語言<b class='flag-5'>應(yīng)用程序</b>

    使用OpenVINO? ElectronJS創(chuàng)建桌面應(yīng)用程序

    的用戶體驗(yàn)。 1 應(yīng)用程序概覽:一種簡(jiǎn)單的背景虛化方法 這個(gè)演示展示了如何在 Node.js 環(huán)境中使用 OpenVINO 工具包實(shí)現(xiàn)背景虛化,并通過 Electron.js 創(chuàng)建的直觀桌面界面進(jìn)行
    的頭像 發(fā)表于 11-25 11:35 ?579次閱讀
    使用OpenVINO? ElectronJS<b class='flag-5'>中</b>創(chuàng)建桌面<b class='flag-5'>應(yīng)用程序</b>

    使用OpenVINO GenAI APIC++構(gòu)建AI應(yīng)用程序

    許多桌面應(yīng)用程序是使用 C++ 開發(fā)的,而將生成式AI(GenAI)功能集成到這些應(yīng)用程序可能會(huì)很具有挑戰(zhàn)性,尤其是因?yàn)槭褂孟?Hugging Face 這樣的 Python 庫的復(fù)
    的頭像 發(fā)表于 10-12 09:36 ?1124次閱讀
    使用OpenVINO GenAI API<b class='flag-5'>在</b>C++<b class='flag-5'>中</b>構(gòu)建AI<b class='flag-5'>應(yīng)用程序</b>

    bootloader和應(yīng)用程序之間共享FEE塊

    電子發(fā)燒友網(wǎng)站提供《bootloader和應(yīng)用程序之間共享FEE塊.pdf》資料免費(fèi)下載
    發(fā)表于 10-10 09:18 ?2次下載
    <b class='flag-5'>在</b>bootloader和<b class='flag-5'>應(yīng)用程序</b>之間共享FEE塊

    TM4C MCU上用FreeRTOS開發(fā)通用應(yīng)用程序應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《TM4C MCU上用FreeRTOS開發(fā)通用應(yīng)用程序應(yīng)用說明.pdf》資料免費(fèi)下載
    發(fā)表于 09-11 14:15 ?0次下載
    <b class='flag-5'>在</b>TM4C MCU上用FreeRTOS<b class='flag-5'>開發(fā)</b>通用<b class='flag-5'>應(yīng)用程序</b>應(yīng)用說明