模板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. Metasploit 使用后门和Rootkit维持访问

    1.内存攻击指的是攻击者利用软件的漏洞,构造恶意的输入导致软件在处理输入数据时出现非预期的错误,将输入数据写入内存中的某些敏感位置,从而劫持软件控制流,转而执行外部的指令代码,造成目标系统获取远程控制 ...

  2. swagger2常用注解说明

    说明: 1.这里使用的版本:springfox-swagger2(2.4)springfox-swagger-ui (2.4) 2.这里是说明常用注解的含义和基本用法(也就是说已经对swagger进行 ...

  3. appium获取APP控件信息

    uiautomatorviewer.bat 该文件位于SDK安装目录tools下,如笔者在“C:\Program Files (x86)\Android\android-sdk\tools”下,双击u ...

  4. Ubuntu 更改屏幕分辨率

    安装完Ubuntu后发现分辨率不合适,平时习惯了看小一点的文字,所以搜了一下修改屏幕分辨率的命令,具体操作如下: 1.先用 xrandr 命令查看一下当前系统支持的分辨率 wayde@wayde-Al ...

  5. 读书笔记——《You Don't Know JS》

    第一部:<You don't know JS: this & Object prototype> 第三章 Object 对象常量 var myObject = {}; Object ...

  6. IDEA部署项目和多余的项目删掉的演示

  7. vs无法启动程序,操作在当前状态中是非法的

    问题的图片: 解决方案: 工具--选项--调试--常规--启用asp.net的JavaScript调试(chrome和ie)去掉勾选

  8. xxl系列部署启动通用办法

    http://10.10.6.186:8080/xxl-job-admin # 编译mvn compile # 清理mvn clean # 打包mvn package # 先清理后编译mvn clea ...

  9. 关于浏览器对html, js,css的解析先后顺序的理解

    1.首先要了解页面的结构(包含哪些元素?哪些计算机语言能够在页面中运行 ) (1)html          不仅可以包含文字,还可以包含图片.链接,甚至音乐.程序等非文字元素的标记语言       ...

  10. CodeForces 516A Drazil and Factorial 动态规划

    原文链接http://www.cnblogs.com/zhouzhendong/p/8990592.html 题目传送门 - CodeForces 516A 题意 对于一个正整数$x$,$f(x)=x ...