国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Pycharm開發(fā)Django的模版結(jié)構(gòu)優(yōu)化

2021-10-06 11:09 作者:app毒  | 我要投稿

模版結(jié)構(gòu)優(yōu)化

引入模版

有時候一些代碼是在許多模版中都用到的。如果我們每次都重復(fù)的去拷貝代碼那肯定不符合項目的規(guī)范。一般我們可以把這些重復(fù)性的代碼抽取出來,就類似于Python中的函數(shù)一樣,以后想要使用這些代碼的時候,就通過include包含進(jìn)來。這個標(biāo)簽就是include。示例代碼如下:


# header.html

<p>我是header</p>


# footer.html

<p>我是footer</p>


# main.html

{% include 'header.html' %}

<p>我是main內(nèi)容</p>

{% include 'footer.html' %}

include標(biāo)簽尋找路徑的方式。也是跟render渲染模板的函數(shù)是一樣的。


默認(rèn)include標(biāo)簽包含模版,會自動的使用主模版中的上下文,也即可以自動的使用主模版中的變量。如果想傳入一些其他的參數(shù),那么可以使用with語句。示例代碼如下:


# header.html

<p>用戶名:{{ username }}</p>


# main.html

{% include "header.html" with username='huangyong' %}

模板繼承:

在前端頁面開發(fā)中。有些代碼是需要重復(fù)使用的。這種情況可以使用include標(biāo)簽來實現(xiàn)。也可以使用另外一個比較強(qiáng)大的方式來實現(xiàn),那就是模版繼承。模版繼承類似于Python中的類,在父類中可以先定義好一些變量和方法,然后在子類中實現(xiàn)。模版繼承也可以在父模版中先定義好一些子模版需要用到的代碼,然后子模版直接繼承就可以了。并且因為子模版肯定有自己的不同代碼,因此可以在父模版中定義一個block接口,然后子模版再去實現(xiàn)。以下是父模版的代碼:


{% load static %}

<!DOCTYPE html>

<html>

<head>

? ? <link rel="stylesheet" href="{% static 'style.css' %}" />

? ? <title>{% block title %}我的站點(diǎn){% endblock %}</title>

</head>


<body>

? ? <div id="sidebar">

? ? ? ? {% block sidebar %}

? ? ? ? <ul>

? ? ? ? ? ? <li><a href="/">首頁</a><P>

? ? ? ? ? ? <li><a href="?og/">博客</a><P>

? ? ? ? </ul>

? ? ? ? {% endblock %}

? ? </div>

? ? <div id="content">

? ? ? ? {% block content %}{% endblock %}

? ? </div>

</body>

<cml>

這個模版,我們?nèi)∶凶鯾ase.html,定義好一個簡單的html骨架,然后定義好兩個block接口,讓子模版來根據(jù)具體需求來實現(xiàn)。子模板然后通過extends標(biāo)簽來實現(xiàn),示例代碼如下:


{% extends "base.html" %}


{% block title %}博客列表{% endblock %}


{% block content %}

? ? {% for entry in blog_entries %}

? ? ? ? <h2>{{ entry.title }}</h2>

? ? ? ? <p>{{ entry.body }}</p>

? ? {% endfor %}

{% endblock %}

需要注意的是:extends標(biāo)簽必須放在模版的第一行。

子模板中的代碼必須放在block中,否則將不會被渲染。

如果在某個block中需要使用父模版的內(nèi)容,那么可以使用{{block.super}}來繼承。比如上例,{%block title%},如果想要使用父模版的title,那么可以在子模版的title block中使用{{ block.super }}來實現(xiàn)。


在定義block的時候,除了在block開始的地方定義這個block的名字,還可以在block結(jié)束的時候定義名字。比如{% block title %}{% endblock title %}。這在大型模版中顯得尤其有用,能讓你快速的看到block包含在哪里。


Pycharm開發(fā)Django的模版結(jié)構(gòu)優(yōu)化的評論 (共 條)

分享到微博請遵守國家法律
南和县| 航空| 翁源县| 铁岭县| 东宁县| 阜宁县| 南开区| 泸西县| 嵊泗县| 宣化县| 万山特区| 渑池县| 屏东县| 尼木县| 固始县| 鄂尔多斯市| 宁德市| 石楼县| 丹棱县| 嵩明县| 阳东县| 时尚| 咸阳市| 锡林浩特市| 恩施市| 英山县| 沈阳市| 富民县| 崇左市| 怀安县| 福海县| 仁寿县| 都江堰市| 房山区| 溆浦县| 麟游县| 右玉县| 大渡口区| 资溪县| 庆云县| 武功县|