Django学习9:模板(templates)

模板

概述

模板由两部分组成:HTML代码 + 逻辑控制代码(变量 + 标签 + 过滤器)

作用:很便利的生成HTML页面

优点:实现了业务逻辑与显示内容的分离,一个视图可以任意使用模板,一个模板可以供多个视图使用

模板处理:

  1. 加载:根据制定的规则找到对应的模板,然后预处理,编译后存在内存中
  2. 渲染:用给定的context内容数据填充加载的内容,并生产新的HTML页面(字符串)

定义模板

变量:

  1. 语法:{{ var }}
  2. 注意:变量名要遵循标识符规则,如果使用的变量不存在,则插入空字符串
  3. 示例:
    Nice day
    {{ sentence }}
  4. 在模板中使用 . 语法访问对象的属性
  5. 在模板中调用对象的方法:不能传递参数
    {{ stu.say }} # 这里的say是个无参函数

标签:

  1. 语法:{% tag %}
  2. 作用:控制逻辑
  3. if:判断
    {% if num %}
    Nice
    {% endif %}
  4. for:循环

    • {% for stu in students %}
    • stu.sname
    • {% empty %}
    • 无数据
    • {% endfor %}
  5. comment:注释
    {% comment %}
    Hi
    Hello
    {% endcomment %}
  6. ifequal、ifnotequal:等于、不等于
    {% ifequal num 10 %}
    Hi
    {% endifequal %}
  7. include:包含
    # 作用:加载模板并以标签内的参数渲染
    # 格式:{% include ‘模板目录’ with 参数1 = 参数2 %}
  8. url:反向解析
    {% url ‘namespace:name’ p1 p2 %}
  9. csrf_token:跨站请求伪造保护

    {% csrf_token %} # 启动post请求功能
    账号:

  10. block、extends:模板继承
  11. autoescapr:用于HTML转义

过滤器:

  1. 语法:{{ 变量 | 过滤器 }}
  2. 作用:在变量被显示之前修改它
  3. lower:转小写
  4. upper:转大写
  5. join:
    # 格式:list | join:参数
    # 示例:{{ str | join:’#’}}
  6. default:如果使用的变量不存在,或者为空、False,则使用默认值,否则使用变量的值
    # 格式:var | default:参数
    # 示例:{{ num | default:’这是个False哟~’}}
  7. date:根据给定格式对一个变量进行格式化显示,格式:var | date:’Y-m-d’
  8. escape:开启HTML转义
  9. 加减乘除
    {{ num }}
    {{ num | add:5}}
    {{ num | add:-5}}
    {% widthratio num 1 5 %}
    {% widthratio num 5 1 %}
  10. 注释
    # 单行注释:
    {# 一行的内容 #}

    # 多行注释(可以包含任何代码):
     {% comment %}
        ...
      {% endcomment %}
    

    模板继承:

  11. 作用:可以减少页面内容的重复定义,实现页面内容的重用
  12. block标签:在父模板中预留位置,让子模版填充
  13. extends标签:继承,写在模板文件的第一行
  14. 示例:
# 定义模板
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
</head>
<body>
    <div id="box">
        {% block main%}

        {% endblock main %}
    </div>

    <hr>

    <div id="temp">
        {% block temp %}

        {% endblock temp %}
    </div>

</body>
</html>

# 定义子模版
{% extends 'base.html' %}

{% block main %}
    <h1>Nice nice</h1>
{% endblock main %}

{% block temp %}
    <h1>Lalala</h1>
{% endblock temp %}

HTML转义:

  1. 问题:用户输入script标签,会当成js代码来处理,对页面造成影响
  2. 默认是开启自动转义,所接收的内容当成字符串处理
  3. 关闭转义
    {% autoescape off %}
    {{ code }}
    {% endescape %}
  4. 注意:如果在父模板中关闭了自动转义,在其子模版中也是关闭的

CSRF:

模拟用户的cookie发起请求(暂未说详细)

验证码:

  1. 作用:在用户注册、登陆页面为了防止暴力请求,减轻服务器的压力;防止CSRF的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值