一、昨日内容回顾

   1.MVC和MTV框架

      MVC:  model 模型  存写数据

          view  视图  给用户展示页面

         control  控制器  负责调度 传递指令

     MTV:

        M:model   模型   ORM操作

        T:template  模板   返回HTML页面

        V:view  视图    负责主要的业务逻辑

   2.变量和点(.)的用法

      {{变量名}}

      {name_list.0}

      {{name_dict.key}}

      {{p1.name}}

      {{dict.items}}

      先调用字典的key值,再属性和方法

   3.filters

     1.语法:

      {{变量|filter:参数}}

     2.内置的filter

      default:‘noting’ 

      filesizeformat:

      add:‘1’

      upper

      lower

      title

      rjust:20

      ljust:20

      center:20

      length

      slice:“::”

      first

      last

      join:"++"

      truncatechars:18

      date:"Y-m-d H:i:s"

      

      safe        

   4.自定义filter

      1.在应用app01下创建一个叫temlatetags的python包

      2.在templatetags的文件夹下创建py文件 命名   

      3. 在py文件中写代码from django import template

register = template.Library()

@register.filter
def add_sb(value,arg='aaa'):
return "{}_sb_{}".formart(value,arg)

@register.filter(name='sb')
def add_sb(value,arg='aaa'):
return "{}_sb_{}".formart(value,arg)

4. 使用自定义filter

{% load myfilters %}
{{ name|add_sb:'xxx'}}
{{ name|sb:'xxx'}}

二、今日内容总结

  1.tags

    1) forloop 系列:

      forloop.counter

      forloop.counter0

      forloop.revcounter

      forloop.revcounter0

      forloop.first

      forloop.last

      forloop.parentloop

    2)

    (1) for 。。。empty。。。

     {%for name in namelist%}

     {%empty%}

     {%endfor%}

    (2)if  else ..........

      if 语句支持and、or、==、<、>、!=、<=、>=、in、not in、is、is not判断

      不支持加减乘除等数学运算:

      偶数判断:{%  if forloop.counter|divisibleby:2  %}

    (3){% csrf_token%}

      这个标签用于跨站请求伪造保护

      在页面的form表单里面写上{% csrf_token %}

    (4)with  

{% with total=business.employees.count %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}

    (5) 注释 {#  #}

    (6) 注意事项

      a.Django模板语言不支持连续判断:        

        {% if a > b > c %} 不支持  ——> {%if a>b and b>c%}
        python:
    

         

        JS:

         

      b. Django的模板语言中属性的优先级大于方法

  2.母版和继承

    1). 为什么要模板

      节省代码 修改方便。

      把所有的公共内容提取到一个页面,在页面上定义block,继承的时候在block块中写内容,覆盖掉母版中的block

      2) 用法:

      模板:就是一个普通的HTML页面

           定义多个block

            使用:

        继承模板{% extends ‘base.html’%}

        使用母版中定义好的block块

        在block中写自己的内容

    3) 注意事项

      (1) 模板中可以定义多个block,一般在定义两个css和js块

       (2) {% extends ‘base.html’%}  写在第一行 不要在block之外写东西

       (3)  {% extends ‘base.html’%} 中要写字符串 是你要继承的模板的名字

  3.组件

   1 。定义一个HTML文件

    很多页面都要用的内容

   2 。在要用的页面使用

    {%  include 'nav.html'  %}

  4.静态文件相关

    1)  {%   load  static%}

        "{%  static ‘/css/...’ %}"

    2)   "{%  get_static_prefix%}imgs/aa.jpg"

    3)  {% get_static_prefix as STATIC_PREFIX %}

      <img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!" />

  5.simple_tag和inclusion_tag

1) simple_tag

和自定义filter类似,只不过接收更灵活的参数。

定义注册simple tag

@register.simple_tag(name="plus")
def plus(a, b, c):
return "{} + {} + {}".format(a, b, c)

使用自定义simple tag

{% load app01_demo %}

{# simple tag #}
{% plus "1" "2" "abc" %}

    

   2) inclusion_tag

      

      

      

三、预习和扩展

python全栈开发day65-templates:tags、母版和继承、组件、静态文件相关、simple_tag和inclusion_tag的更多相关文章

  1. Django中的tags,母版和继承,组件,静态文件相关,自定义simpletag和自定义inclusion_tag

    Tags for <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% endfor %} &l ...

  2. python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag

    一.Tags(一)for 1.基本用法 <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% e ...

  3. python 全栈开发,Day79(Django的用户认证组件,分页器)

    一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...

  4. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  5. python全栈开发day66-视图系统、路由系统

    一.昨日内容回顾 1. tags 1. for循环 {% for name in name_list %} {{ name }} {% endfor %} {% for name in name_li ...

  6. Python全栈开发【面向对象进阶】

    Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...

  7. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

  8. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  9. Python全栈开发【基础四】

    Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...

随机推荐

  1. mysql备份和bin-log日志

    总结]:mysql备份和bin-log日志 备份数据: mysqldump -uroot -p123456 test -l -F '/tmp/test.sql' -l:读锁(只能读取,不能更新) -F ...

  2. linux shell中 if else以及大于、小于、等于逻辑表达式

    在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下,方便需要的朋友 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示 ...

  3. [转]MySQL常用Json函数和MySQL常用字符串函数

    MySQL常用Json函数:https://www.cnblogs.com/waterystone/p/5626098.html MySQL常用字符串函数:https://www.cnblogs.co ...

  4. Python 三种过滤去重方法

    SET集合去重 set(1,1,2) REDIS去重 布隆过滤器

  5. 洛谷P4451 [国家集训队]整数的lqp拆分 [生成函数]

    传送门 题意简述:语文不好不会写,自己看吧 思路如此精妙,代码如此简洁,实是锻炼思维水经验之好题 这种题当然是一眼DP啦. 设\(dp_n\)为把\(n\)拆分后的答案.为了方便我们设\(dp_0=1 ...

  6. NIO(一)

    1.NIO是什么? 是JDK1.4之后推出的一个新的IO操作(netty.mina通讯框架的底层都是NIO实现的连接) 2.NIO和IO的区别(阻塞只会出现在网络通讯中,都是同步) NIO:非阻塞类型 ...

  7. STL的基本操作指令

    list :Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 b ...

  8. cf1133 bcdef

    b所有数模k,记录出现次数即可 #include<bits/stdc++.h> using namespace std; int main(){ ]; ]={}; cin>>n ...

  9. JavaScript实现的抛物线运动效果

    css88 技术文档地址: http://www.css88.com/archives/5355 张鑫旭 技术文档地址: https://www.zhangxinxu.com 使用示例: 使用时直接引 ...

  10. jmeter 控制线程组执行顺序

    这个要配合全局变量.if和while来实现BeanShell取样器,全局变量:${__setProperty(newswitch,${switch1},)}if条件:"${__P(newsw ...