1. 程式人生 > >django-6.模板中include使用

django-6.模板中include使用

鏈接 pla 不同的 itl mar 使用 ima urn meta

前言

當我們打開一個網站的時候,在打開不同的頁面時候,會發現每個頁面的頂部、底部內容都差不多,這樣就可以把這些公共的部分,單獨抽出來。
類似於python裏面的函數,把公共部分寫成函數,然後調用就行了,這樣就能實現代碼的復用。django裏面也有類似的功能,用include可以實現。

公共內容

如下圖所示,網站的每個頁面都有頂部導航,body正文,底部導航這三塊內容

技術分享圖片

hello/templates/base.html內容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<section>
    <h1>頂部導航</h1>
    <p>python自動化-上海-悠悠</p>
    <hr>
</section>
<section>
    <h1>body正文</h1>
    <p>正文內容</p>
</section>
<section>
    <br><br><br><br><hr>
    <h1>底部導航</h1>
    <p>底部一些友情鏈接啊,網站導航,版權啊</p>
</section>
</body>
</html>

一般頭部和底部是不變的,變的只是body裏面內容,這樣把頭部和底部單獨抽出來

hello/templates/top.html單獨拿出來

<section>
    <h1>頂部導航</h1>
    <p>python自動化-上海-悠悠</p>
    <hr>
</section>

hello/templates/end.html單獨拿出來

<section>
    <br><br><br><br><hr>
    <h1>底部導航</h1>
    <p>底部一些友情鏈接啊,網站導航,版權啊</p>
</section>

include語法

hello/templates/page1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{% include ‘top.html‘ %}
<section>
    <h1>body正文</h1>
    <p>正文內容</p>
</section>
{% include ‘end.html‘ %}

</body>
</html>

hello/views.py視圖函數

from django.shortcuts import render

# Create your views here.

def page1(request):
    return render(request, ‘page1.html‘)

urls.py添加訪問路徑

from django.conf.urls import url
from django.urls import re_path, path
from hello import views
urlpatterns = [
    path("page1/", views.page1),
]

瀏覽器訪問地址http://127.0.0.1:8000/page1/就能看的效果了

帶參數

公共部分top.html和end.html裏面也可以傳變量,如

<section>
    <h1>頂部導航</h1>
    <p>python自動化-{{name}}</p>
    <hr>
</section>

對應視圖函數

def page1(request):
    context = {"name": "yoyo"}
    return render(request, ‘page1.html‘, context)

django-6.模板中include使用