zoukankan      html  css  js  c++  java
  • Django template

    1. template是基于文本格式的文件(html文件也是文本格式),包含如下一些关键字:
      • variables:当template被evaluated时,variable会被替换成相应的值,variable在模板中的格式:{{variable}},如果variable不存在,模板会使用TEMPLATE_STRING_IF_INVALID设置的值替换变量,默认是‘’.template中方法调用也是变量的一种,如{{blog.entry_set.all.count}},注意方法做变量时没办法传递参数,所以只能是无参方法作变量
      • filters:用于修改variable,‘|’称为管道符,对变量应用filter,如{{name|low}},其中low就是一个filter,filter还可以有参数,也可以自定义filter。django中大概有三十种filter,常用的有:
        • default:如果变量是false或者空,使用default值替换variable,{{value|default:”nothing”}},default的值默认不转义
        • length:获取变量的长度,{{value|length}}
        • striptags:除去html标签,{{value|striptags}}:value中含有标签时,标签会被删除只返回value的剩余部分
        • escape:转义字符串中的html标签
        • safe:使变量输出不会进行html转义,如果设置了自动转义关闭,这个filter就会失效
      • comments:用于模板中注释,格式{##},注释中也可包含代码,{# {%if foo%}bar{%else%} #},模板evaluated时会正常执行
      • tags:控制template的逻辑,格式{% tag %},部分tag还要有{% endtag %},django自带大约二十多个tag,常用的如下:
        • for:用于数组循环
          for example
        • if,elif,和else:
          if example
        • block和extends:模板继承时使用,block表示可以在子模板中改写的块,同一模板中的block名字不能相同,extends表示用于继承父模板
    2. 模板继承:
      • 继承模板使用{% extends %},并且它必须是子模板中第一个tag
      • 推荐在base template中多使用{% block %}
      • 如果多个模板中有重复内容,则考虑将内容移到base template中的{% block %}下
      • 如果要在子模板的{%block%}中访问父模板的block内容可以使用{{block.super}}
    3. Django模板中默认开启了对用于输出的变量的html转义,如果要关闭转义功能,可以在变量,模板,site三个级别设置关闭
      关闭转义
    4. Context 类:传递给模板,作用是替换模板中的变量。Context对象是个stack,所以包含push和pop方法,构造函数中可以包含两个参数:
      • 一个字典型,用于映射变量名和变量值
      • 当前application的名字,当url有命名空间时有用
        Context
    5. RequestContext:Context的子类,其与Context有两个不同:
      • 第一个参数是HttpRequest对象
      • 会调用TEMPLATE_CONTEXT_PROCESSOR中的processor依次往RequestContext中加入一些预定义变量,自己也可以定义额外的processor再添加其他内容到RequestContext中
        RequestContext processor
    6. 使用模板通常有两个步骤:
      • compile模板存到一个对象中.模板只编译一次
      • 调用模板对象的render方法,参数是context
        Template example
    7. variable lookup:变量名中可以包含点,当点出现时,以{{foo.bar}}为例它的解析顺序为:
      • dictionary lookup,如foo[“bar”]
      • attribute lookup,如foo.bar
      • list-index lookup,如foo[bar]
      • method lookup
        Variable lookup
    8. method lookup时,注意以下几点:
      • 调用方法抛出异常时,如果异常类型设置了”静态属性”silent_variable_failure=true,则变量会被替换为空,否则会替换为异常信息
      • 如果方法含有参数,则变量会被替换为空
      • 在模板中调用某些方法会产生负面影响如model.delete().为了防止这种情况可以设置alters_data=true.这样方法不会被调用,而是用TEMPLATE_STRING_IF_INVALID替换变量的值。model.delete方法的alters_data默认为true
  • 相关阅读:
    Redis自定义动态字符串(sds)模块(二)
    Redis自定义动态字符串(sds)模块(一)
    HTML入门1—HTML基础学习
    selenium安装及官方文档
    selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 错误处理方法
    python--requests库 安装及简单使用
    AttributeError: module 'requests' has no attribute 'get' 遇到了这个错误,是因为我把python关键字做了包名。。。
    python 笔记2:python语法基础
    Fiddler-3 Fiddler抓包-手机端配置
    Fiddler-2 Fiddler抓包原理
  • 原文地址:https://www.cnblogs.com/phenixyu/p/Python.html
Copyright © 2011-2022 走看看