html中的block、extends、include三者的區別和用法

block extends include三者的差別跟用法

一、block定義基礎模板,在html內容中定義多個block塊,block由子模板引用同名block塊,來決定是否替換這些部分

{% block title %}一些內容,這裏可不填{% endblock %}
{% block content %}一些內容,這裏可不填{% endblock %}
{% block footer %}一些內容,這裏可不填{% endblock %}

這裏 title content footer 不是變量,名字自定義(比如你也可以寫成{% block body %})

block一般定義在base.html中,block是可以在那些繼承base的html中添加內容的區

二、子模板的引用方式
{% extends "base.html" %}
{% block title %}The current time{% endblock %}
{% block content %}<p>It is now {{ current_date }}.</p>{% endblock %}

第一句是固定的格式,必須爲模板中的第一個模板標記
extends的參數一般爲字符串,也可爲變量
可帶路徑,相對路徑,以 TEMPLATE_DIRS 的模板目錄 爲基準
子模板決定替換的block塊,無須關注其它部分,沒有定義的塊即不替換,直接使用父模板的block塊 

三、引用上級代碼塊在其基礎上進行一些修改 {{ block.super }}
{% block footer %}
{{ block.super }}
AAAAA
{% endblock %}

Django模板系統——模板包含另一模板 include

使用模板加載API機制之後,可用的包含其它模板標籤
{% include 'nav.html' %}
{% include "nav.html" %}

可帶路徑,相對路徑,以 TEMPLATE_DIRS 的模板目錄 爲基準
{% include 'includes/nav.html' %}

可使用變量名
{% include template_name %}
包含的變量都會統一處理,不區分是第幾層模板

Django的{{ block.super }}模板標籤
Django模板中{{ block.super }}這個標籤非常有用,可以做到不僅僅是覆蓋父模板,而是在父模板基礎上追加內容。當然也可以覆蓋。

這就給了我們靈活性:既可以完全重寫,也可以複用父模板,也可以在複用的基礎上擴展。

 

二 locals() 技巧

locals()返回一個包含當前作用域裏面的所有變量和它們的值的字典

from django.shortcuts import render_to_response
import datetime
def current_datetime6(request):
    current_date = datetime.datetime.now()
    return render_to_response('current_datetime6.html', locals())

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章