zoukankan      html  css  js  c++  java
  • Django 模版层

    一、定义

    模版的创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户,基于这些原因,将页面的设计和Python的代码分离开会更干净简洁更容易维护。 我们使用 Django的 模板系统 (Template System)来实现这种模式。

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

    模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签。

    二、变量

    可以通过{{var_name}}在模版中处理

    三、过滤器

    1、语法:

    {{obj|filter__name:param}}

    2、实例:

    default:

    如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:

    {{ value|default:"nothing" }}

    length:

    返回值的长度。它对字符串和列表都起作用。例如:

    {{ value|length }}

    如果 value 是 ['a', 'b', 'c', 'd'],那么输出是 4。

    filesizeformat:

    将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB''4.1 MB''102 bytes', 等等)。例如:

    {{ value|filesizeformat }}

    如果 value 是 123456789,输出将会是 117.7 MB

    date:

    如果 value=datetime.datetime.now()

    {{ value|date:"Y-m-d" }} 

    slice:

    如果 value="hello world"

    {{ value|slice:"2:-1" }}

    truncatechars:

    如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。

    参数:要截断的字符数

    {{ value|truncatechars:9 }}

    如果value“Joel 是 >,输出将为“Joel i ...”

    safe:

    Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。比如:

    value="<a href="">点击</a>"
    
    {{ value|safe}}

    模版之标签:

    for标签:

    遍历每一个元素:

    {% for person in person_list %}
        <p>{{ person.name }}</p>
    {% endfor %}

    可以利用{% for obj in list reversed %}反向完成循环。

    遍历一个字典:

    {% for key,val in dic.items %}
        <p>{{ key }}:{{ val }}</p>
    {% endfor %}

    for ... empty:

    for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,可以有所操作。

    {% for person in person_list %}
        <p>{{ person.name }}</p>
    
    {% empty %}
        <p>sorry,no person here</p>
    {% endfor %}

    if 标签:

    {% if %}会对一个变量求值,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。

    {% if num > 100 or num < 0 %}
        <p>无效</p>
    {% elif num > 80 and num < 100 %}
        <p>优秀</p>
    {% else %}
        <p>凑活吧</p>
    {% endif %}
    
    
  • 相关阅读:
    MySQL字符串中数字排序的问题
    Jquery 实现跨域处理
    mysql中insert into select from的使用
    Mysql索引会失效的几种情况分析(转)
    ASP.Net Web API 输出缓存(转)
    8 种提升 ASP.NET Web API 性能的方法 (转)
    C#进阶系列——WebApi 异常处理解决方案(转)
    C#使用Log4Net记录日志(转)
    前端传递对象列表到WebApi
    忏悔录
  • 原文地址:https://www.cnblogs.com/liuxiaowei/p/7812924.html
Copyright © 2011-2022 走看看