自定义模板标签和 过滤器:

因为模板标签和过滤器只给我们提供了 这么多 无法对我们的使用造成更多的便利 ,剩下的就需要我们自己去创建新的 模板标签和过滤器了

1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.

2、在app中创建templatetags模块(模块名只能是templatetags)

3、创建任意 .py 文件,如:my_tags.py

首先你需要在你的app中创建新的一个规定好的文件夹这个文件夹的名字是规定好的:templatetags

然后在这个文件夹内创建你的py文件

from django import template
from django.utils.safestring import mark_safe #这个模块是进行跳转的时候的必须的模块
register = template.Library() #创建这个对象
@register.filter # 用这个装饰器 来装饰我们的函数
def multi_filter(x,y):
return x*y
@register.filter
def link_tag(href):
return mark_safe('<a href = %s>click</a>'%href)

下面通过urls分发视图找到views内的对应的templace内的自定义标签 随之 执行

{% load my_filter_tag %}  {#这一步是找到你的创建的自定的规则#}
<p>{{ num|multi_filter:2 }}</p> {#在你的规定中你的multi_filter是求出两个数的乘数的#}
<p>{{ 'http://www.baidu.com'|link_tag }}</p> {#找到你的规定内的link_tag这个函数是定义一个按钮进行跳转的#}
 

模板继承 (extend):

1、创建一个base.html文件,
2、把要显示的页面的内容写在这里面,也就是html要在浏览器显示的内容
3、在right里面写个盒子
  {% block classinfo %}

  {% endblock %}
在这里面写个空盒子,以后谁来扩展就在这个盒子里面添加相应的内容就行了

4、然后再创建一个.html文件,让这个继承base.html文件,
  {% extends "base.html" %}    #必须是在文件的第一行
  在基板里面添加内容
  {% block classinfo %}
    <h2>首页</h2>
    <h2>学生信息</h2>
    <h3>{{ class_id }}班</h3>
  {% endblock%}

5、也可以写好多盒子,
  在left中写个盒子
    {% block menu %}
      <p>I see you you</p>
    {% endblock %}

模板继承是当你的templace内的html文件有多余的重复内容之后难道你要每一个都去重复的写吗?不  这个时候就用到了继承了

就好比你去浏览一个网页有很多网页是 当你浏览这个网页的时候你再点击这个网页内的其他的内容 那么可能你的顶部或者左边的某一部分还是不变的  那么这就用到了模板的继承(后面的使用很多的)

include  继承

{% include 'advertise.html' %}   
上面是继承了advertise.html内的所有的内容
{#include是直接把所有的内容给复制过来这个不太好没有规定#}

这个模版,我们把它叫作 base.html, 它定义了一个可以用于两列排版页面的简单HTML骨架。“子模版”的工作是用它们的内容填充空的blocks。

在这个例子中, block 标签定义了三个可以被子模版内容填充的block。 block 告诉模版引擎: 子模版可能会覆盖掉模版中的这些位置。

子模版可能看起来是这样的:

{% extends "base.html" %}

{% block title %}My amazing blog{% endblock %}

{% block content %}
{% for entry in blog_entries %}
<h2>{{ entry.title }}</h2>
<p>{{ entry.body }}</p>
{% endfor %}
{% endblock %}

可修改的模板:

   {% block title %}  {#这个是定义一个可以修改的块 这个块被继承后可以修改#}
<title>Title</title>
{% endblock title %} {#结束这个 可以继承的块#} 这个是设置这个模板的title标签的内容可以被继承的时候修改
{{block.super}}
修改的同时把父模板的内容拿下来

这个是你再修改这个模板的同时把你的父亲模板的内容也给拿下来使用

{% extends 'base.html' %}
{% block content %}
<div class="article_list">
<ul>
{% for article in article_list %}
<li>{{ article }}</li>
{% endfor %} </ul>
</div>
{% endblock content %}
{% block title %}
<title>Article</title>
{% endblock %} 此次步骤是继承你的base.html内的content块 然后再把base内的这个块的内容给拿过来显示

模板继承and自定义模板标签和过滤器的更多相关文章

  1. Django 自定义模版标签和过滤器

    实现自定义过滤器 1. 创建register变量 在你的模块文件中,你必须首先创建一个全局register变量,它是用来注册你自定义标签和过滤器的, 你需要在你的python文件的开始处,插入几下代码 ...

  2. Django自定义模板标签和过滤器

    1.创建模板库 在某个APP所在目录下新建包templatetags,然后在其中创建存储标签或者过滤器的的模块,名称随意,例如myfilters.py. 在这个模块中编写相关代码. 注意:templa ...

  3. python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)

    昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  4. Django 模板 语法 变量 过滤器 模板继承 组件 自定义标签和过滤器 静态文件相关

    本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法   模板渲染的官方文档 关于模板渲染你只需要记两种特殊符号(语法 ...

  5. Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介

    没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ...

  6. day58——模板继承、组件、自定义标签和过滤器、inclusion_tag、静态文件配置、url别名和反向解析、url命名空间

    day58 模板相关 模板继承(母版继承) 1. 创建一个xx.html页面(作为母版,其他页面来继承它使用) 2. 在母版中定义block块(可以定义多个,整个页面任意位置) {% block co ...

  7. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  8. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  9. Django框架(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

    目录 模板层:变量.过滤器.标签.自定义标签和过滤器 一.模板层变量 1.语法 2.使用 二.模板层之过滤器 1.语法 2.常用过滤器 3.其他过滤器 三.模板值标签 1.for标签 2.if标签 3 ...

随机推荐

  1. JAVA的NIO的新特性和小Demo,进一步了解NIO

    1.为什么要用NIO NIO 的创建目的是为了让 Java 程序员可以实现高速 I/O 而无需编写自定义的本机代码.NIO 将最耗时的 I/O 操作(即填充和提取缓冲区)转移回操作系统,因而可以极大地 ...

  2. str_split 分隔中文出现乱码 替代函数

    function mbstringtoarray($str,$charset) { $strlen=mb_strlen($str); while($strlen){ $array[]=mb_subst ...

  3. python-生产者消费者模式

    #!/usr/bin/python #coding=utf-8 import threading,time lock=threading.Condition() product=0 class Mak ...

  4. rspec中的let和let!区别

    文档 https://relishapp.com/rspec/rspec-core/v/2-5/docs/helper-methods/let-and-let 从上面文档中得出 let 1 只会在一个 ...

  5. 关于js语法(运算中出现无限大的问题)本身的错误的解决方案

    错误原因: 一是 JavaScript 浮点数计算的 Bug, 另一个是和计算机最终转换成二进制计算有关系 解决方案: 第一种就是利用JavaScript 的toFixed(n) 方法,直接获取N 位 ...

  6. 64位使用windbg获取Shadow SSDT

    首先选择一个带界面的程序explorer.exe进行附加 kd> !process explorer.exe PROCESS ffff86893dd075c0 SessionId: Cid: 0 ...

  7. dll ocx cab IE 自动安装

    我们打开淘宝等网站时,IE浏览器会提示安装空间,这个控件便是用于对用户名密码进行加密的ActiveX控件.如何在我们的站点上安装如此控件,让用户可以通过简单的点击便可方便使用我们的空间呢? 下面是如何 ...

  8. JAVA标签

    java没有GOTO,可以通过标签实现跳转. 在 Java 里唯一需要用到标签的地方就是拥有嵌套循环,而且想中断或继续多个嵌套级别的时候. 使用位置:用在循环语句之前.----它实际需要紧靠在循环语句 ...

  9. [javaEE] Servlet中Session的使用

    Session是一个域 作用范围:当前会话范围 生命周期:当程序第一次调用request.getSession()创建出客户端的session对象,30分钟没有操作认为超时,这个可以在web.xml中 ...

  10. apache Header set Cache-Control

    设置静态页面的缓存最大值 在.htaccess中添加下面的代码 <FilesMatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$"> Hea ...