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. Vue.js - Day1

    什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于We ...

  2. 修改Linux中发送邮件中附件大小的限制

    方法一: 在命令中设定postfix的message_size_limit值 (但系统重启后会失效) postconf -e "message_size_limit = 20480000&q ...

  3. ubuntu terminal copy paste

    copy: ctrl + insert paste: shift + insert

  4. ARM实验3 ——串口实验

    uart串口实验 实验内容: 编写UART模块程序,通过串口将信息打印到终端. 实验目的: 熟悉开发环境的使用. 掌握exynos4412处理器的UART功能. 实验平台: FS4412开发板,ecl ...

  5. java研发常见问题总结 1

    1.java中所有类的父类是什么?他都有什么方法? Object类是所有类的直接或间接基类,如果一个类在声明时未继承基类,Java就默认其基类是Object,故Object被称为根类.该类位于java ...

  6. framework7 手风琴页面有滚动条时再次点开手风琴item滑动里面内容消失的解决方法

    在手风琴的ul外面的div加入最小高度min-height:1000px,问题解决 示例代码: <div class="list-block accordion-list" ...

  7. 虚连接 tcp

    由TCP 建立的连接叫做虚连接(virtual connection),这是因为它们是由软件实现的,底层的系统并不对连接提供硬件或软件支持,只是两台机器上的TCP 软件模块通过交换消息来实现逻辑...

  8. 【转】如何手动添加Android Dependencies包

    在ADT16 之前可以在工程里面做关联,eclipse会在工程上自动添加ReferenceLibrary.新版本的ADT修改了第三方jar的导入方式,只需要在工程目录下新建libs文件夹,注意是lib ...

  9. Adobe CS2提供免费序列号

    据Adobe官方博客报道,自2012年12月13日起,因为技术故障,该公司已停止使用Creative Suite(CS2)产品及Acrobat 7的激活服务器. 这些产品大多是7年前发布,很多已经无法 ...

  10. sql的where条件转换成mongdb筛选条件

    解析字符串 filterModel1 and filterModel2 and (filterModel3 or filterModel4) 1.转换成mongo的筛选条件 /// <summa ...