最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)化的評論 (共 條)

分享到微博請遵守國家法律
华蓥市| 巴里| 道孚县| 台东县| 万年县| 陵川县| 石林| 读书| 苏尼特右旗| 云梦县| 阜宁县| 奉化市| 巴林右旗| 塘沽区| 东乌珠穆沁旗| 来凤县| 枣阳市| 泗水县| 婺源县| 泰州市| 任丘市| 家居| 精河县| 淅川县| 建昌县| 黑水县| 沂源县| 鸡西市| 义马市| 龙口市| 和顺县| 松原市| 达尔| 新津县| 柞水县| 宁化县| 库伦旗| 出国| 东乌| 昌宁县| 怀宁县|