django-7.django模板繼承(block和extends)
阿新 • • 發佈:2019-02-10
oct utf bubuko import contex 裏的 string 輸入 charset
前言
打開一個網站時候,點導航欄切換到不同的頁面,發現導航部分是不變的,只是頁面的主體內容變了,於是就可以寫個母模板,其它的子頁面繼承母模板就可以了。
母模板
可以在母模板中添加多個塊標簽,每個塊標簽取不同的名稱,如下格式,context是塊標簽名稱
{% block content %} {% endblock content %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>母模板</title>
</head>
<body>
<section>
<h1>頂部導航</h1>
<p>python自動化-上海-悠悠</p>
<hr>
</section>
<!--這是一段註釋。block是一個塊標簽, content是標簽名稱-->
{% block content %} {% endblock content %}
<p>---------自動化教程---------</p>
<!--這是一段註釋。block是一個塊標簽, ad是標簽名稱-->
{% block ad %} {% endblock ad %}
<section>
<br><br><br><br><hr>
<h1>底部導航</h1>
<p>底部一些友情鏈接啊,網站導航,版權啊</p>
</section>
</body>
</html>
也可以給塊標簽添加默認值,如:
<!--這是一段註釋。block是一個塊標簽, 可以給默認值-->
{% block defaut %}
<p>如果子頁面中,沒填充此block內容,這裏的就是默認內容</p>
{% endblock defaut %}
子頁面
extends繼承母模板的頁面內容,填充 block塊標簽內容,指定對應的名稱就可以了。不是所有的block都需要填充,如果母模板中blcok有默認內容,子模板不填充的話,就顯示默認的內容。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>子頁面</title>
</head>
<body>
<!--這是一段註釋。extends繼承basepage.html頁面-->
{% extends "basepage.html" %}
{% block content %}
<p>這裏是content塊的填充內容</p>
{% endblock content %}
{% block ad %}
<ul>自動化內容</ul>
{% for i in ads %}
<li>{{i}}</li>
{% endfor %}
{% endblock ad %}
</body>
</html>
views與urls
上面子模板裏面有給for循環,參數是ads,在views視圖函數裏面添加context 參數
hello/views.py視圖函數
from django.shortcuts import render
from django.http import HttpResponse, Http404
# Create your views here.
def sonpage(request):
context = {"ads": ["selenium", "appium", "requests"]
}
return render(request, ‘sonpage.html‘, context)
urls.py添加訪問路徑
from django.conf.urls import url
from django.urls import re_path, path
from hello import views
urlpatterns = [
path("sonpage/", views.sonpage),
]
打開瀏覽器輸入地址:http://127.0.0.1:8000/sonpage/
就能訪問到頁面了
備註:子模板也可以結合使用上一篇提到的include語法:
{% include ‘end.html‘ %}
django-7.django模板繼承(block和extends)