zoukankan      html  css  js  c++  java
  • python全栈开发day65-templates:tags、母版和继承、组件、静态文件相关、simple_tag和inclusion_tag

    一、昨日内容回顾

       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

          

          

          

    三、预习和扩展

  • 相关阅读:
    NetBeans IDE 6.8 发布候选版 1 已经可用!
    怎样的提问才是有效的提问
    Drop 简介
    NetBeans 时事通讯(刊号 # 83 Dec 03, 2009)
    体悟
    《程序员》杂志第8期笔记
    svmlight
    9158.com amazing
    别人玩女人,屌丝玩手机,我没得玩了orz
    光看菜谱成不了好厨师
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/9395342.html
Copyright © 2011-2022 走看看