模板2

一 、 母版

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Title</title>
{% block page-css %} {% endblock %}
</head>
<body> <h1>这是母板的标题</h1> {% block page-main %} {% endblock %}
<h1>母板底部内容</h1>
{% block page-js %} {% endblock %}
</body>
</html>

注意:我们通常会在母板中定义页面专用的CSS块和JS块,方便子页面替换。

继承母版:

1.在子页面中在页面最上方使用下面的语法来继承母板。 

{% extends 'layouts.html' %}

2.通过在母板中使用{% block  块名%}来定义"块"。

在子页面中通过定义母板中的block名来对应替换母板中相应的内容。

{% block 块名 %}
...
...
{% endblock %}

二 、 组件

可以将常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,然后在需要使用的地方按如下语法导入即可。

其实就是一个公用的一段html代码单独放置在一个HTML文件中,那个网页需要就引用即可(常用于导航栏等)

{% include 'navbar.html' %}

三 、 静态文件相关

1、直接使用

  1.引用css

{% load static %}
{#<link rel="stylesheet" href="/static/bootstrap.css">#}
<link rel="stylesheet" href="{% static 'bootstrap.css' %}"> {# 动态获取静态路径 #}

  2.引用js

 {% load static %}
<script src="{% static 'jquery-3.3.1.js' %}"></script>
<script src="{% static 'bootstrap.js' %}"></script>

  3.文件多处被用到可以存为一个变量

{% load static %}
{% static "images/image1.jpg" as myphoto %}
<img src="{{ myphoto }}"></img>

2 、 使用get_static_prefix

使用方法和直接使用类似(只获得静态路径前缀,然后再去拼接)

{% load static %}
<img src="data:images/image1.jpg" alt="Hi!" />
<link rel="stylesheet" href="{% get_static_prefix %}bootstrap.css"> {# 动态获取静态路径 #}
{% load static %}
<img src="{% get_static_prefix %}images/image1.jpg" alt="Hi!" />
{% load static %}
{% get_static_prefix as presfix_ %}
<img src="{{ preafix_ }}images/image1.jpg" alt="Hi!" />

 

四 、自定义simpletag

和自定义filter类似,只不过接收更灵活的参数。

在app文件夹下边创建  templatetags 的 python package包

from django import template

register = template.Library()

@register.simple_tag     #必须写装饰器,不然django不知道
def str_add(a, b, c, d):
return '%s+%s+%s+%s' % (a, b, c, d)

使用

{% load my_simple_tag %}     {# 先下载#}

{% str_add '我' '的' '名字是:' '小明' %}    {# 文件中要使用的函数名,和 参数 #}

五  、inclusion_tag

多用于返回html代码片段(比组件变动更灵活)

1.在在app文件夹下边的 templatetags 的 python package 中创建一个 my_inclusion_tag.py 文件

from django import template

register = template.Library()

@register.inclusion_tag('paging.html')
def func(total,current_num):
return {'total':range(1,total + 1),'current_num':current_num}

2.在展示列表中下载后调用定义的函数

    {% load my_inclusion_tag %}
{% func 8 5 %}

3.在需要调用返回的html一段代码

    <ul class="pagination">
{% for num in total %}
{% if num == current_num %}
<li class="active"><a href="#">{{ num }}</a></li>
{% else %}
<li><a href="#">{{ num }}</a></li>
{% endif %}
{% endfor %}
</ul>

流程大致如下图

Django之模板2的更多相关文章

  1. python学习笔记--Django入门二 Django 的模板系统

    为了使网站更干净简洁更容易维护,页面的设计和Python的代码必须分离开.我们可以使用Django的 模板系统 (Template System)来实现这种模式. 几个简单的模板标签(tag):   ...

  2. 第四章:Django 的模板系统(转)

    在之前的章节中,你可能觉得例子中视图返回文本有点不妥.即是, HTML 是直接写在 Python 代码中的.     这种做法会导致这些问题:     要做任何设计上的更改就必须改写 Python 代 ...

  3. Django使用模板后无法找到静态资源文件

    Django使用模板后无法找到静态资源文件 环境配置 Django版本1.11 python版本3.6.2 前言 在编写Django网站的时候,在涉及模板方面,一些简单的例子都没有问题,但这些例子都有 ...

  4. django的模板(二)

    模板(二) 实验简介 本节继续介绍模板的常用标签,for.if.ifequal和注释标签. 一.基本的模板标签和过滤器 1. 标签 if/else {% if %} 标签检查(evaluate)一个变 ...

  5. django之模板显示静态文件

    由于django的模板渲染机制,图片不能直接引用,否则不会显示. <img src="/static/img/logo.jpg"> 可以看出图片的大小轮廓,但并不显示内 ...

  6. Django之模板系统

    变量的使用: def test(request): num=1 s='hello' li=[1,2,['a','b']] dic={'name':'w','age':1} se={1,2,3} tup ...

  7. django默认模板引擎和jinja2模板引擎

    在使用中,大家会发现django默认模板引擎有很多局限性,最明显的就是四则运算.就只能加减,乘除都不支持.另外还有判断相等,不能直接if,要用ifequal.确实不太方便.还有一点,django默认模 ...

  8. Django之模板

    Django模板系统 官方文档 常用语法 Django模板中只需要记两种特殊符号: {{  }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作. 变量 {{ ...

  9. Django的模板系统

    一.语法 关于模板渲染只需要记住两种特殊符号(语法): {{ }} 和 {% %}  (变量相关用{{ }}  逻辑相关用{% %}) 二.变量 在Django的模板语言中按照{{ 变量名 }}来使用 ...

  10. Django的模板语言

      Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. ...

随机推荐

  1. CentOS 7 部署 Spring Boot

    Spring Boot 内嵌了tomcat .我们可以将Boot打成 jar 包丢到服务器上运行才行. Spring Boot已经帮我们打理好了这一切,如果项目是继承自 spring-boot-sta ...

  2. LeetCode(124):二叉树中的最大路径和

    Hard! 题目描述: 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不需要经过根节点. 示例 1: 输入: [1, ...

  3. 《剑指offer》 调整数组顺序使得奇数在偶数前面

    本题来自<剑指offer> 调整数组顺序使得奇数在偶数前面 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分, ...

  4. java 接口实现的概念整理

    1.在java语言中接口由类实现,以便使用接口中的方法,重写接口中的方法,实现接口的类必须重写接口中的所有类,由于接口中的方法一定是 public abstract方法,所以类重写接口中的方法不仅要去 ...

  5. cf862d 交互式二分

    /* 二分搜索出一个01段或10即可 先用n个0确定1的个数num 然后测试区间[l,mid]是否全是0或全是1 如果是,则l=mid,否则r=mid,直到l+1==r 然后再测试l是1还是r是1 如 ...

  6. OpenCV-Python入门教程6-Otsu阈值法

    在说Otsu之前,先说几个概念 灰度直方图:将数字图像中的所有像素,按照灰度值的大小,统计其出现的频率.其实就是每个值(0~255)的像素点个数统计. Otsu算法假设这副图片由前景色和背景色组成,通 ...

  7. python 0007

    #coding='utf-8'# import re import os def get_list(): list_file=[] for f in os.listdir(): if f.endswi ...

  8. STL用法大全

    1.    概述 泛型编程思想最早缘于A.Stepanov提出的部分算法可独立于数据结构的论断.20世纪90年代初A.Stepanov和Meng Lee根据泛型编程的理论用C++共同编写了STL.但直 ...

  9. Redis的并发竞争问题

    问题描述:多客户端同时并发写一个key,可能本来应该先到的数据后到了,导致数据版本错了.或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了. 一个key的值是1,本来按顺序 ...

  10. flink的流处理特性

    flink的流处理特性: 支持高吞吐.低延迟.高性能的流处理 支持带有事件时间的窗口(Window)操作 支持有状态计算的Exactly-once语义 支持高度灵活的窗口(Window)操作,支持基于 ...