Django模板繼承與模板的導(dǎo)入實(shí)例詳解
一:模版的繼承
1.什么是模板繼承?
你需要事先在你想要使用的主頁面上劃定區(qū)域做好標(biāo)記,之后在子頁面繼承的時候你就可以使用在主頁面劃定的區(qū)域,也就意味著,如果你不劃定任何區(qū)域,那么你子頁面將無法修改主頁面內(nèi)容
2.使用繼承流程原理
1.先在你想要繼承的主頁面上通過bolck劃定你將來可能要改的區(qū)域,并做好標(biāo)記
2.在子頁面上繼承extends,利用block自動提示選取你想要修改的內(nèi)容區(qū)域標(biāo)記名稱
3.在子頁面extends中寫你要修改主頁面標(biāo)記區(qū)的代碼
4.然后就可以讓子頁面的修改內(nèi)容渲染到主頁面的劃定區(qū)域上
你們有沒有見過一些網(wǎng)站
這些網(wǎng)站頁面整體都大差不差 只是某一些局部在做變化
3.模板繼承語法
1.繼承 {% extends '模版頁面名' %} 2.局部修改 # 1.你需要先去模版頁面中劃定可以被修改的區(qū)域 {% block '名字' %} 模版內(nèi)容(666) {% endblock %} # 2.子頁面中即成了模版頁面之后 就可以根據(jù)名字修改 {% block '名字' %} 子版內(nèi)容 子版頁面吃了可以自己寫自己的之外 還可以繼續(xù)使用模版的內(nèi)容 {{ block.super }} 666 {{ block.super }} 666 {{ block.super }} 666 {{ block.super }} 666 {% endblock %}
4.一般情況下模版頁面上應(yīng)該至少有三塊可以被修改的區(qū)域 1.css區(qū)域 2.html區(qū)域 3.js區(qū)域 每一個子頁面就都可以有自己獨(dú)有的css代碼 html代碼 js代碼 互相之間 互不干擾 # 子頁面css {% block css %} {% endblock %} {% block content %} {% endblock %} # 子頁面js {% block js %} {% endblock %}
二:模板的繼承使用
1.案例需求
1.實(shí)現(xiàn)用戶點(diǎn)擊登錄右側(cè)局部出現(xiàn)登錄頁面,點(diǎn)擊注冊右側(cè)出現(xiàn)注冊頁面
urls.py
# 模板的繼承 url(r'^home/', views.home), # 創(chuàng)建login路由 url(r'^login/', views.login), # 創(chuàng)建reg路由 url(r'^reg/', views.reg),
views.py
def home(request): return render(request, 'home.html') def login(request): return render(request, 'login.html') def reg(request): return render(request, 'reg.html')
home.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--bootstrap引入 CSS CDN--> <link rel="stylesheet"> <!--jQuery引入 CDN--> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <!--Bootstrap引入 Js CDN--> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> {% block css %} {% endblock %} </head> <body> {#導(dǎo)航條#} <nav class="navbar navbar-inverse"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Brand</a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> <li role="separator" class="divider"></li> <li><a href="#">One more separated link</a></li> </ul> </li> </ul> <form class="navbar-form navbar-left"> <div class="form-group"> <input type="text" class="form-control" placeholder="Search"> </div> <button type="submit" class="btn btn-default">Submit</button> </form> <ul class="nav navbar-nav navbar-right"> <li><a href="#">Link</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">Action</a></li> <li><a href="#">Another action</a></li> <li><a href="#">Something else here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated link</a></li> </ul> </li> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav> {#左右不留白#} <div class="container-fluid"> {#row 劃分12份區(qū)域#} <div class="row"> {# 左側(cè)分三份#} <div class="col-md-3"> {#側(cè)邊欄 #} <div class="list-group"> <a href="/home/" class="list-group-item active"> 首頁 </a> <a href="/login/" class="list-group-item">登錄</a> <a href="/reg/" class="list-group-item">注冊</a> </div> </div> <div class="col-md-9"> {# 面板#} <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title">Panel title</h3> </div> <div class="panel-body"> {# 劃分區(qū)域 不影響區(qū)域展示,僅僅是標(biāo)記 區(qū)域名#} {% block content %} {# 巨幕#} <div class="jumbotron"> <h1>Hello, world!</h1> <p>...</p> <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p> </div> {% endblock %} </div> </div> </div> </div> </div> {% block js %} {% endblock %} </body> </html>
login.html
{#login 頁面全部清空#} {#login繼承home主頁面#} {% extends 'home.html' %} {#子頁面的css代碼 #} {% block css %} <style> h1 { color: red; } </style> {% endblock %} {#block 指定選擇主頁面劃分的(區(qū)域) 可以進(jìn)行修改 #} {% block content %} <h1 class="text-center">登錄頁面</h1> <form action=""> <p>username: <input type="text" class="form-control"></p> <p>password: <input type="text" class="form-control"></p> <input type="submit" class="btn btn-success"> </form> {% endblock %} {# 子頁面的js代碼 #} {% block js %} <script> alert('登錄頁面') </script> {% endblock %}
reg.html
{#reg頁面全部清空#} {#reg繼承home主頁面#} {% extends 'home.html' %} {#子頁面的css代碼 #} {% block css %} <style> h1 { color: seagreen; } </style> {% endblock %} {#block 指定選擇主頁面劃分的(區(qū)域) 可以進(jìn)行修改 #} {% block content %} <h1 class="text-center">注冊頁面</h1> <form action=""> <p>username: <input type="text" class="form-control"></p> <p>password: <input type="text" class="form-control"></p> <input type="submit" class="btn btn-danger"> </form> {% endblock %} {# 子頁面的js代碼 #} {% block js %} <script> alert('注冊') </script> {% endblock %}
2.總結(jié)模板繼承
一般情況下 模版的頁面上劃定的區(qū)域越多 那么該模版的擴(kuò)展性就越高
但是如果太多 那還不如自己直接寫
三:模版的導(dǎo)入
1.模板導(dǎo)入
將頁面的某一個局部當(dāng)成模塊的形式
哪個地方需要就可以直接導(dǎo)入使用即可
2.模板導(dǎo)入格式
{% include '導(dǎo)入html文件名' %}
3.模板導(dǎo)入使用
sss.html
<h1>我是sss.html頁面</h1>
login.html子頁面
{% endblock %} {#block 指定選擇主頁面劃分的(區(qū)域) 可以進(jìn)行修改 #} {% block content %} <h1 class="text-center">登錄頁面</h1> <form action=""> <p>username: <input type="text" class="form-control"></p> <p>password: <input type="text" class="form-control"></p> <input type="submit" class="btn btn-success"> </form> <p>模板的導(dǎo)入</p> {% include 'sss.html' %} {% endblock %}
4.使用結(jié)果
總結(jié)
到此這篇關(guān)于Django模板繼承與模板導(dǎo)入的文章就介紹到這了,更多相關(guān)Django模板繼承與模板導(dǎo)入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
50行Python代碼獲取高考志愿信息的實(shí)現(xiàn)方法
這篇文章主要介紹了50行Python代碼獲取高考志愿信息的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07windows下Python安裝、使用教程和Notepad++的使用教程
這篇文章主要介紹了windows下Python安裝、使用教程和Notepad++的使用教程,需要的朋友可以參考下2019-10-10Python對130w+張圖片檢索的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Python對130w+張圖片檢索的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Python實(shí)現(xiàn)PS圖像明亮度調(diào)整效果示例
這篇文章主要介紹了Python實(shí)現(xiàn)PS圖像明亮度調(diào)整效果,結(jié)合實(shí)例形式分析了Python基于skimage模塊調(diào)整圖片明亮度的原理與具體操作技巧,需要的朋友可以參考下2018-01-01Python實(shí)現(xiàn)Mysql全量數(shù)據(jù)同步的腳本分享
這篇文章主要為大家詳細(xì)介紹了基于Python如何實(shí)現(xiàn)Mysql全量數(shù)據(jù)同步的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-06-06