python的模板:HTML代码+模板语法

<!--模版语法之变量-->
<h1>Index </h1>
<p>{{ name }}</p>
<p>{{ num }}</p>
<p>{{ list1 }}</p>
<p>{{ info }}</p>
<p>{{ b }}</p>
<p>{{ alex }}</p>
<p>{{ egon }}</p>
<p>{{ p_list }}</p>
<p>{{ money }}</p>
<p>{{ flag }}</p>
<p>{{ null_list }}</p>
<hr>
<!--模版语法之深度查询  .字符-->
<p>列表:{{ list1.1 }}</p>
<p>字典:{{ info.name }} {{ info.age }}</p> <p>对象:{{ alex.name }} {{ alex.age }}</p>
<p>{{ p_list.1.name }} {{ p_list.1.age }}</p>
     <!--模版语法之过滤器-->
<p>时间:{{ t|date:"Y-m-d H:i:s" }}</p>
    <!--全局 settings.py DATETIME_FORMAT = 'Y-m-d H:i:s' USE_L10N = True -->
  <!--如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:-->
<p>None值:{{ money|default:'数据为空' }}</p>
<p>False:{{ flag|default:'关闭' }}</p>
<p>空列表:{{ null_list|default:'无' }}</p>
<p>文件大小:{{ file_size|filesizeformat }}</p> <p>截取字节数:{{ text|truncatechars:16 }}</p>
<p>截取字符数:{{ text|truncatewords:2 }}</p> <p>链接:{{ link }}</p>
<h1>转义:{{ link|safe }}</h1> # 防止xss攻击, <p>加法:{{ list1.1|add:111 }}</p>
 标签看起来像是这样的: {% tag %}。标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来控制流程,一些加载其后的变量将使用到的额外信息到模版中。一些标签需要开始和结束标签 (例如{% tag %} ...标签 内容 ... {% endtag %})。

     <!--模版语法之标签-->
<h1>for 标签</h1> {% for i in list1 %}
<p>{{ i }}</p>
{% endfor %}
<hr> {% for key in info %}
<p>{{ key }}</p>
{% endfor %}
<hr> {% for person in p_list %}
<p>{{ forloop.counter1 }} {{ person.name }} {{ person.age }}</p>
{% endfor %}
<hr> {% for null in null_list %}
{% empty %}
<p>无内容</p>
{% endfor %} <hr>
<h1>if 标签</h1>
{% if money %}
<p>土豪,我们做朋友吧</p>
{% else %}
<p>穷光蛋</p>
{% endif %} <hr> <h1>with 标签</h1> {% with p_list.1.name as n %}
{{ n }}
{% endwith %} <hr>
<h1>csrf 标签</h1>
{% csrf_token %}

自定义标签和过滤器

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

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

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

 #! /usr/bin/env python
# -*- coding: utf-8 -*-
# __author__ = "ziya"
# Date: 2018-10-22 from django import template # 固定
register = template.Library() # 自定义过滤器 只能两个参数 但是可以作为if 的变量
@register.filter
def multi_fliter(x,y): return x*y # 自定义标签 可以传多个参数 不可以作为if 的变量
@register.simple_tag
def multi_tag(x,y):
return x*y

4、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tag_filter.py

 {% load my_tag_filter %}  # 写在最顶端

     <hr>
<h1>自定义过滤器</h1>
<p>{{ num|multi_fliter:20 }}</p> <p>自定义标签</p>
<p>{% multi_tag 10 10 %}/p>

008---Django的模版层的更多相关文章

  1. 63、django之模版层(template)

    上篇主要介绍了django的MTV模型,主要介绍了视图层之路由配置系统url分发和视图层之视图函数view,本篇主要讲解MTV模型中的模版层template. 模版层(template) 一.模版简介 ...

  2. django之模版层(template)

    上篇主要介绍了django的MTV模型,主要介绍了视图层之路由配置系统url分发和视图层之视图函数view,本篇主要讲解MTV模型中的模版层template. 本篇导论: 模版简介 模版之变量 模版之 ...

  3. Django之模版层

    一.模版简介 你可能已经注意到我们在例子视图中返回文本的方式有点特别,也就是说,HTML被直接硬编码在python代码之中. def current_datetime(request): now = ...

  4. Django 之模版层

    一.模板简介 将前端页面和Python 的代码分离是一种的开发模式. 为此 Django专门提供了模板系统 (Template System,即模板层)来实现这种模式. Django 的模板 = HT ...

  5. Django day06 模版层(二) 过滤器 标签

    一: 模板语言之过滤器: " | " 前后的区分: 前面的是函数的第一个参数, 后面的是python的一个函数, 冒号后面的是第二个参数例:  <p>过滤器之默认值:{ ...

  6. Django day06 模版层(一) 变量和深度查询

    一.模版语法之变量:  1  - {{ 变量 }} ******重要*******{#这个相当于print了该变量#} def index(request): name = 'prince' #字符串 ...

  7. Django之模版层-语法:标签 {% %}

    标签 {% %} for循环以及for..empty.. <h4>for标签</h4> {% for i in lis %} <p>{{ i }}</p> ...

  8. 6.-Django设计模式及模版层

    一.MVC (java等其他语言) MVC代表Model-view-Contorller(模型-视图-控制器)模式 M模型层主要用于对数据库层的封装 V视图层用于向用户展示结果 C控制器用于处理请求. ...

  9. 第三章:模版层 - 1:Django模板语言详解

    本节将介绍Django模版系统的语法.Django模版语言致力于在性能和简单性上取得平衡. 如果你有过其它编程背景,或者使用过一些在HTML中直接混入程序代码的语言,那么你需要记住,Django的模版 ...

  10. 64、django之模型层(model)--建表、查询、删除基础

    要说一个项目最重要的部分是什么那铁定数据了,也就是数据库,这篇就开始带大家走进django关于模型层model的使用,model主要就是操纵数据库不使用sql语句的情况下完成数据库的增删改查.本篇仅带 ...

随机推荐

  1. spring-boot学习之属性配置

    通过@value注解,将配置文件中的内容引入

  2. vue-2.4.0-添加的新东东

    组件内新增实现属性继承 VUE中一个比较令人烦恼的事情是属性只能从父组件传递给子组件.这也就意味着当你想向嵌套层级比较深组件数据传递,只能由父组件传递给子组件,子组件再传递给孙子组件...像下面这样 ...

  3. html table 的属性

    表格table th,td 文字顶部对齐 <th valign="top"></th> <td valign="top">& ...

  4. div多选控制

    此点击按钮,弹出DIV,div内容可以多项选择,点击确定,被选项回填至文本框.功能类似之前写过的一篇日期多选,不过是在其基础上,新增点击页面其他区域,隐藏div功能. 1.css部分代码 .multi ...

  5. Unity Shader 阴影

    最近在看Unity shader开发实战详解,刚开始看阴影部分,稍微有了点思路.在这里写点笔记,算是小结吧. .阴影实现方法 一种是通过模拟光照的原理,用向量的方法 找到被光线照射的点 映射到平面的位 ...

  6. (转)轻松解决 MyEclipse、Eclipse 编译时提示 @Override The method of type must override a superclass method 即 @Override 标注问题

    刚才在把工程从其他地方导入到自己机子的 MyEclipse 下时,出现了 The method of type must override a superclass method ,提示的是实现类必须 ...

  7. seattle language school & on-line degree

    http://www.kaplaninternational.com/ https://asuonline.asu.edu/online-degree-programs/ https://asuonl ...

  8. Python元组、列表、字典、集合

    1. 元组 元组由不同元素组成,每个元素可以存储不同类型的数据,元组是有序的,元组创建后不能再做任何修改. 元组的创建: tuple = ('a','b','c','d') 如果创建的元组只有1个元素 ...

  9. 永恒之蓝EternalBlue复现

    0x01 漏洞原理:http://blogs.360.cn/blog/nsa-eternalblue-smb/ 目前已知受影响的 Windows 版本包括但不限于:Windows NT,Windows ...

  10. 【js基础修炼之路】- 手把手教你实现bind

    手写bind前我们先回顾一下bind有哪些特性,以便更好的理解bind和实现bind. bind的特性 var obj = { a: 100, say(one, two) { console.log( ...