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

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

分享到微博請遵守國家法律
平原县| 汉川市| 葵青区| 武乡县| 车致| 安顺市| 福海县| 师宗县| 大悟县| 嘉峪关市| 武穴市| 依兰县| 武威市| 遂平县| 德惠市| 米林县| 潜山县| 和政县| 莱州市| 卓尼县| 出国| 南开区| 咸宁市| 龙胜| 南部县| 东丽区| 抚州市| 三台县| 崇文区| 龙海市| 东源县| 华亭县| 天镇县| 樟树市| 毕节市| 五华县| 渭南市| 化隆| 新巴尔虎右旗| 昌吉市| 肥乡县|