zoukankan      html  css  js  c++  java
  • Django框架之模板层

    常用语法

    只需要记两种特殊符号:

    {{  }}和 {% %}

    变量相关的用{{}},逻辑相关的用{%%}。

    变量

    在Django的模板语言中按此语法使用:{{ 变量名 }}

    后端朝前端页面传递数据的方式
    # 第一种
    return render(request,'index.html',{'n':n})
    # 第二种
    return render(request,'index.html',locals())
    # 将当前所在的名称空间中的名字全部传递给前端页面
    后端传函数名到前端,会自动加括号调用,并且在前端显示函数的返回值,但是不支持传参

    后端传对象到前端,就相当于打印了这个对象:

    前端获取后端传过来的容器类型的内部元素 统一采用句点符(.)

    {# 取l中的第一个参数 #}
    {{ l.0 }}
    {# 取字典中key的值 #}
    {{ d.name }}
    {# 取对象的name属性 #}
    {{ obj.name }}

    过滤器

    default

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

    列表l的值为空的话,前端显示的默认值就是nothing

    length

    返回值的长度,作用于字符串和列表

    {{ value|length }}

    返回value的长度,如 value=['a', 'b', 'c', 'd']的话,就显示4

    filesizeformat

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

    如果 变量size是 122323,输出将会是 119.5 KB

    slice

    字符串切片

    <p>{{ res|slice:'0:8' }}</p>
    <p>{{ res|slice:'0:8:2' }}</p>

    date

    时间格式化

    truncatechars

    截取固定的长度的字符串

    #  ...占用3个字符,空格占用1个字符

    truncatewords

    在一定数量的空格后截取

     

    截图4个空格,显示:

    safe

     

    显示的是渲染后的标签:

    而不是字符串

     第二种通过后端取消转义的方式:

    标签

    for循环

    普通for循环

    for循环可用参数:

    forloop

     

    VariableDescription
    forloop.counter 当前循环的索引值(从1开始)
    forloop.counter0 当前循环的索引值(从0开始)
    forloop.revcounter 当前循环的倒序索引值(从1开始)
    forloop.revcounter0 当前循环的倒序索引值(从0开始)
    forloop.first 当前循环是不是第一次循环(布尔值)
    forloop.last 当前循环是不是最后一次循环(布尔值)
    forloop.parentloop 本层循环的外层循环

     for ... empty

    if 判断

    if、else

    if、elif、else

    with

    定义一个中间变量,多用于给一个复杂的变量起别名

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

    自定义过滤器

    1.在应用名下新建一个名为templatetags文件夹(必须叫这个名字)
    2.在该新建的文件夹内新建一个任意名称的py文件(这里新建的py文件为test_tag.py)
    3.在该py文件中需要固定写下面两句代码
    from django import template

    register = template.Library()

    然后在该py文件中定义过滤器

    前端html文件使用该过滤器必须先加载

    过滤器的函数需要两个参数,第一个参数n为视图层已经定义好的,第二个参数在过滤器名字后面加:再填写

    自定义标签

    自定义inclusion_tag

    能返回一段html代码

    最后前端显示结果:

    模板的继承与导入

    母板

    首先需要在被继承的模板中划分多个区域
    {% block 给区域起的名字 %}

    {% endblock %}

    通常情况下一个模板中应该至少有三块
    {% block css %}
    页面css代码块
    {% endblock %}

    {% block js %}
    页面js代码块
    {% endblock %}

    {% block content %}
    页面主体内容
    {% endblock %}

    子板继承模板
    先继承模板所有的内容
    {% extends 'home.html' %}

    然后根据block块的名字修改指定区域的内容
    {% block content %}
    <h1>登录页面</h1>
    <form action="">
    <p>username:<input type="text" class="form-control"></p>
    <p>password:<input type="text" class="form-control"></p>
    <input type="submit" class="btn btn-success">
    </form>
    {% endblock %}

    如果还想继承之前那个block里的内容

    模板的导入

    将一段html当做模块的方式导入到另一个html展示
    {% include '想导入的html文件名' %}

  • 相关阅读:
    poj 1860 Currency Exchange(最短路径的应用)
    poj 2965 The Pilots Brothers' refrigerator
    zoj 1827 the game of 31 (有限制的博弈论)
    poj 3295 Tautology (构造法)
    poj 1753 Flip Game(枚举)
    poj 2109 (贪心)
    poj 1328(贪心)
    Qt 对单个控件美化
    Qt 4基础
    Bash Shell
  • 原文地址:https://www.cnblogs.com/zhangdajin/p/11005493.html
Copyright © 2011-2022 走看看