模板的结构优化,也可以说是模板的继承修改,
引入模板的操作:
有时候一些代码是在许多模版中都用到的。如果我们每次都重复的去拷贝代码那肯定不符合项目的规范。一般我们可以把这些重复性的代码抽取出来,就类似于Python中的函数一样,以后想要使用这些代码的时候,就通过include包含进来。这个标签就是include。
传递参数的两种方式:
context方式和通过在include的时候进行with
引入参数:通过context引入
from django.shortcuts import render
# Create your views here.
def front(request):
context = {
'username':'cheney',
}
return render(request,'front.html',context=context)
模板:
header.html
<ul>
<li>新闻</li>
<li>消息</li>
<li>关于</li>
<li>美女</li>
<li>{{ username }}</li>
</ul>
引入参数依旧是通过双花括号包起来
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% include 'header.html' %}
<p>front 页面</p>
</body>
</html>
include的方式引入header
传参的另一种方式:
{% include 'header.html' with username='lcy' %}
引入模板与模板继承,模板继承与面向对象有点相似
定义基类base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>
{% block title %}
{% endblock %}
</title>
</head>
<body>
<ul>
<li>新闻</li>
<li>消息</li>
<li>关于</li>
<li>美女</li>
</ul>
<!--block 提供了子模板去修改的内容-->
{% block content %}
{% endblock %}
<footer>
网页底部
</footer>
</body>
</html>
title中定义的是网页的标题名称
一个可以修改的块是使用block 和endblock包起来的,
继承和修改block:
{% extends 'base.html' %}
<!--相当于import 引入,不引入或者后引入都是要报错的-->
<!--这是在继承,如果没有用到block的话,就什么都不会显示-->
{% block content %}
<p>这是后台首页</p>
{% endblock %}
{% block title %}
lcy111
{% endblock %}
<!--title 是用来修改网页名字的 -->
from django.shortcuts import render
# Create your views here.
def front(request):
context = {
'username':'cheney',
}
return render(request,'front.html',context=context)
def cms(request):
context = {}
return render(request,'cms.html',context=context)