模板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. 【python】控制台输出颜色

    来源:http://www.cnblogs.com/yinjia/p/5559702.html 在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端 ...

  2. 图像特征的提取(gaussian,gabor,frangi,hessian,Morphology...)及将图片保存为txt文件

    # -*- coding: utf-8 -*- #2018-2-19 14:30:30#Author:Fourmi_gsj import cv2 import numpy as np import p ...

  3. gitlab报错502及处理

    报错截图: 解决: 1.端口问题 如上面写的815端口,那配置文件的8080端口都改成815端口 之后重新载入配置文件,并开启 gitlab-ctl reconfigure gitlab-ctl st ...

  4. OpenCV-Python入门教程2-打开摄像头

    一.打开摄像头 import cv2 # 打开摄像头并灰度化显示 capture = cv2.VideoCapture(0) while(True): # 获取一帧 ret, frame = capt ...

  5. C#enum使用Attribute求字段名

    用到了一些反射:(自己看吧) public enum UserState { /// <summary> /// 正常 /// </summary> [Remark(" ...

  6. jexus linux x64 [专业版] 安装和配置https

    一.环境 操作系统:centOs7-x64 二.准备工作 购买SSL/TLS证书 三.部署 1.首先查看“/lib”或“/usr/lib”等系统库文件夹中是否有SSL库文件的名字,该文件名应该是“li ...

  7. 深入理解javascript原型和闭包——从【自由变量】到【作用域链】

    一直对闭包和变量作用域链模糊不清!!!有时都怀疑自己是不是脑袋秀逗啦还是范萌!! 先解释一下什么是“自由变量”. 在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用 ...

  8. jquery源码 整体架构

    一.对外提供接口 对外提供了jQuery. //可以通过jQuery或者$来找到jQuery (function(window,undefined){ //(21,94) 定义了一些变量和函数 jQu ...

  9. element-ui MessageBox的bug

    通过 use引用messageBox有bug Vue.use(MessageBox) 页面一开始会有一个弹窗,内容空白 Vue.component(MessageBox.name, MessageBo ...

  10. Asp.net MVC - 使用PRG模式(附源码)

    阅读目录: 一. 传统的Asp.net页面问题 二.Asp.net MVC中也存在同样的问题 三.使用PRG模式 四.PRG模式在MVC上的实现 一. 传统的Asp.net页面问题 一个传统的Asp. ...