1、设置TEMPLATES
首先,在该项目目录下创建templates文件夹
然后,在templates文件夹下,创建base.html作为所有html的父类,并设置settings中的TEMPLATES
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], #修改了这一行
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
base.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title%} base.html 的title{% endblock %}--欢迎访问</title>
</head>
<body>
{% block css %} {# block 是块代码 #}
base.html的css
{% endblock %}
{% include 'index.html' %} {# 引入其他html #}
</body>
</html>
extends(扩展)和block(方块)一起用
它们用于母版和子版的继承
在母版html中将一些需要替换的部分用{% block xxx %}。。。{% endblock %}括起来,
{% block title %}一些内容,这里可不填{% endblock %}
{% block content %}一些内容,这里可不填{% endblock %}
{% block footer %}一些内容,这里可不填{% endblock %}
这里 title content footer 不是变量,名字自定义,名字必须定义
block一般定义在base.html中 block是可以在那些继承base的html中添加内容的区
--------------------------------------------------------------------------------------------------------------------------------------------------
在子版html中的在第一行需要写上要继承的母版,{% extends '母版的相对路径' %}这样引入母版。
{% extends "base.html" %} {# 在子版的第一行,引入要继承的母版#}
{% block title %}----替换母版名为title的block块----{% endblock %}
{% block content %}------替换母版名为content的block块----------{% endblock %}
第一句是扩展母版固定的格式,必须为模板中的第一个模板标记
extends的参数一般为字符串,也可为变量
可带路径,相对路径,以 TEMPLATE_DIRS 的模板目录 为基准
子模板决定替换的block块,无须关注其它部分,没有定义的块即不替换,直接使用父模板的block块
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
include(包含)
include用户公共模板的引入,当很多页面(不是所有)中都需要某段html语言时,引入公共模板是个好方法,
在当前的html中的某个你需要引入公共模板的地方使用{% include '公共模板的相对路径' %}引入。
{% include 'nav.html' %}
{% include "nav.html" %}
可带路径,相对路径,以 TEMPLATE_DIRS 的模板目录 为基准
{% include 'includes/nav.html' %}