django基础知识之模板继承:

模板继承

  • 模板继承可以减少页面内容的重复定义,实现页面内容的重用
  • 典型应用:网站的头部、尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义
  • block标签:在父模板中预留区域,在子模板中填充
  • extends继承:继承,写在模板文件的第一行
  • 定义父模板base.html
{ %block block_name%}
这里可以定义默认值
如果不定义默认值,则表示空字符串
{ %endblock%}
  • 定义子模板index.html
{ % extends "base.html" %}
  • 在子模板中使用block填充预留区域
{ %block block_name%}
实际填充内容
{ %endblock%}

说明

  • 如果在模版中使用extends标签,它必须是模版中的第一个标签
  • 不能在一个模版中定义多个相同名字的block标签
  • 子模版不必定义全部父模版中的blocks,如果子模版没有定义block,则使用了父模版中的默认值
  • 如果发现在模板中大量的复制内容,那就应该把内容移动到父模板中
  • 使用可以获取父模板中block的内容
  • 为了更好的可读性,可以给endblock标签一个名字
{ % block block_name %}
区域内容
{ % endblock block_name %}

三层继承结构

  • 三层继承结构使代码得到最大程度的复用,并且使得添加内容更加简单
  • 如下图为常见的电商页面

1.创建根级模板

  • 名称为“base.html”
  • 存放整个站点共用的内容
<!DOCTYPE html>
<html>
<head>
    <title>{%block title%}{%endblock%} 水果超市</title>
</head>
<body>
top--{{logo}}
<hr/>
{%block left%}{%endblock%}
{%block content%}{%endblock%}
<hr/>
bottom
</body>
</html>

2.创建分支模版

  • 继承自base.html
  • 名为“base_*.html”
  • 定义特定分支共用的内容
  • 定义base_goods.html
{%extends ‘temtest/base.html‘%}
{%block title%}商品{%endblock%}
{%block left%}
<h1>goods left</h1>
{%endblock%}
  • 定义base_user.html
{%extends ‘temtest/base.html‘%}
{%block title%}用户中心{%endblock%}
{%block left%}
<font color=‘blue‘>user left</font>
{%endblock%}
  • 定义index.html,继承自base.html,不需要写left块
{%extends ‘temtest/base.html‘%}
{%block content%}
首页内容
{%endblock content%}

3.为具体页面创建模板,继承自分支模板

  • 定义商品列表页goodslist.html
{%extends ‘temtest/base_goods.html‘%}
{%block content%}
商品正文列表
{%endblock content%}
  • 定义用户密码页userpwd.html
{%extends ‘temtest/base_user.html‘%}
{%block content%}
用户密码修改
{%endblock content%}

4.视图调用具体页面,并传递模板中需要的数据

  • 首页视图index
logo=‘welcome to itcast‘
def index(request):
    return render(request, ‘temtest/index.html‘, {‘logo‘: logo})
  • 商品列表视图goodslist
def goodslist(request):
    return render(request, ‘temtest/goodslist.html‘, {‘logo‘: logo})
  • 用户密码视图userpwd
def userpwd(request):
    return render(request, ‘temtest/userpwd.html‘, {‘logo‘: logo})

5.配置url

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r‘^$‘, views.index, name=‘index‘),
    url(r‘^list/$‘, views.goodslist, name=‘list‘),
    url(r‘^pwd/$‘, views.userpwd, name=‘pwd‘),
]
时间: 2024-08-22 16:49:26

django基础知识之模板继承:的相关文章

django基础知识之模板:

模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用 模板包含 HTML的静态部分 动态插入内容部分 Django模板语言,简写DTL,定义在django.template包中 由startproject命令生成的settings.py定义关于模板的值: DIRS定义了一个目录列表,模板引擎按列表顺序

Django[基础知识]

Python功能最全的WEB框架:Django,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 使用Django需进行以下操作: 1.创建Django项目,创建方式有两种. a.命令操作: django-admin startproject  dg_web   //dg_web为项目名称 b.直接在开发环境IDE下进行新建django项目 创建项目之后的文件目录如下: 2.在创建的项目下建立功能程序,操作如下: 命令行:python manage.py startap

django基础知识之定义模板:

定义模板 模板语言包括 变量 标签 { % 代码块 % } 过滤器 注释{# 代码或html #} 变量 语法: {{ variable }} 当模版引擎遇到一个变量,将计算这个变量,然后将结果输出 变量名必须由字母.数字.下划线(不能以下划线开头)和点组成 当模版引擎遇到点("."),会按照下列顺序查询: 字典查询,例如:foo["bar"] 属性或方法查询,例如:foo.bar 数字索引查询,例如:foo[bar] 如果变量不存在, 模版系统将插入'' (空字符

Django基础四之模板系统

一 语法   模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法): {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身. 变量的命名包括任何字母数字以及下划线 ("_")的组合. 变量名称中不能有空格或标点符号. 深度查询据点符(.)在模板语言中有特殊的含义.当模版系统遇到点("."),它将以这样

laravel5.1框架基础之Blade模板继承简单使用方法分析

模板继承什么用? 自然是增强基础页面的复用,有利于页面文档的条理,也便于更改多处使用的内容,如页头.页脚 1.用法概要 @include('common.header') 包含子视图 @extends('article.common.base') 继承基础模板 @yield('content') 视图占位符 @section('content') @endsection继承模板后向视图占位符中填入内容 {{-- 注释 --}} Blade模板中注释的使用 2.具体使用 2.1 新建Article

Django基础知识二

别名 url views 写一个对应的reg函数,这个函数进来第一件事应该是给客户端返回一个页面. 所以先写一个Html 这个action写的是/reg/ 然后继续写函数 之所以上面的action处直接写/reg/可以使用,不用写上具体的ip+port是因为 当客户点击submit的时候,浏览器会将前面的Ip和端口自动补全,这个ip和端口是服务器提供的. ======================================= 别名这个操作是在url里写的. 因为url里的地址和html里

django基础知识之后台管理Admin站点:

Admin站点 通过使用startproject创建的项目模版中,默认Admin被启用 1.创建管理员的用户名和密码 python manage.py createsuperuser 然后按提示填写用户名.邮箱.密码 2.在应用内admin.py文件完成注册,就可以在后台管理中维护模型的数据 from django.contrib import admin from models import * admin.site.register(HeroInfo) 查找admin文件:在INSTALLE

Django基础知识

目录 Django模板系统 官方文档 回到顶部 常用语法 Django模板中只需要记两种特殊符号: {{  }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值. 几个例子: view中代码: def template_test(request): l = [11, 22, 33] d = {"name": "ale

Javascript基础知识盲点总结——继承

原性链继承方法中,javascript是通过另一个类的实例进行继承的(实际是用一个构造器函数的实体去覆盖另一个对象的原型).如下代码: TwoDShape.prototype = new Shape(); Triangle.prototype = new TwoDShape(); 需要直接用new Shape()构造一个实体,然后才能通过该实体的属性完成相关的继承工作,而不是直接继承自Shape()构造器. 这中方法也确保了对Shape()进行任何修改都不会影响TwoDShape(),因为后者继