Django框架提升(3)~模板

-----------模板--------------

定义模板

  • 变量var:视图传递给模板的数据

      注意:要遵守标识符规则
      语法:{{var}}
          <h1>{{stu.sname}}</h1>  #调用的模型里的属性
          <h1>{{stu.getName}}</h1> #调用模型里的方法
          注意:
              1.如果使用的变量不存在,则插入的是空字符串
          在模板中使用点语法
              字典查询
              属性或者方法
              数字索引
      在模板中调用对象的方法
          注意:不能传递参数
    
  • 标签tag

      语法:
                  {%tag%}
              作用:
                  在输出中创建一些文本
                  控制逻辑和循环
              -if:    逻辑判断
                  格式:
                      1.{% if 表达式 %}语句 {%endif%}
                      2.{% if 表达式 %}语句{%else%}语句2 {%endif%}
                      3.{% if 表达式 %}语句{%elif%}语句2{%elif%}语句n{%else%}语句 {%endif%}
                         示例: {%if num%}<h1>num={{num}}</h1>{%endif%}
    
    
      -for    遍历
          格式:
              1.{% for 变量 in 列表 %}
                   语句
              2.{%for 变量 in 列表%}
                  语句
                  {%empty%}
                  列表为空或者不存在时执行语句
                {%endfor%}
             变量:{{forloop.counter}} 表示当前是第几次循环
    
      -comment    注释
          格式:
              {%comment%}
              注释的内容
              {%endcomment%}
      -ifequal/ifnoteuqal     判断
          作用:
              判断是否相等或者不相等
          格式:
              {%ifequal 值1 值2%}
              如果值1=值2 执行此语句
              {%endifequal%}
      -include
          作用:
              加载模板并以标签内的参数渲染
          格式:
              {%include '模板目录' 参数1 参数2...%}
      ------------
      -url
      -------------
          作用:
              反向解析
          格式:
              {%url 'namespace:name' p1 p2%}
    
          注意:定义url时,需要为项目urls.py中include定义namespace属性,为应用urls.py中的path定义name属性
          并且在应用的urls.py声明命名空间:
              app_name= 'name属性'
              工程urls.py:
                  re_path(r'^',include('myApp.urls',namespace="app")),
              应用urls.py:
                  re_path(r'^good/(\d+)$',views.good,name="good"),
              html:
                  <a href="{% url 'app:good' 1 %}">反向解析链接</a>
    
      -------------------
      -csrf_token
      ------------------
          作用:
              用于跨站请求伪造保护
              默任写恶意的网站包含链接,表单,按钮,js。会利用登陆的用户在浏览器中认证从而攻击服务
          格式:
              {%csrf-token%}
          防止CSRF恶意攻击:
              1.在settings.py中MIDDLEWARE 加上:'django.middleware.csrf.CsrfViewMiddleware',
                  但是这样自己本身服务器也无法访问
              2.在表单中 添加 {% csrf_token %}
    
    
      -----------------------
      -block、extends
      -------------------
          作用:模板继承可以减少页面的内容的重复定义,实现页面的重用
          block标签:在父模板中预留区域,子模版去填充
              语法:{% block 标签名 %}
                      挖坑
                      {% endblock %}
          extends标签:继承模板,需要写在模板文件的第一行
              语法: {% extends '父模板路径' %}
                      {% block 标签名 %}
                      填坑
                      {% endblock%}
          示例:定义一个父模板
    
                  定义子模板
    
      ------------------
      -autoescape on/off
      ---------------------
          作用:用于html转义
          问题:将接收到的code当成一个普通的字符串渲染
              views:
                  return render(request,'myApp/index.html',{"code":"<h1>haha </h1>"})
              html:
                  {{code}}
          目的:将接收到的字符串当成一个html代码渲染
          示例:
              html":
                  {% autoescape off %}   #off 关闭自动转义(不转成字符串)
                  {{code}}
                  {% endautoescape %}
    
    
    
      -widthratio
          作用:乘法和除法
          格式:
              {% widthratio 变量 除数 乘数 %}
              <h1>num= {% widthratio num 1 5 %}</h1>
    
      验证码:
          作用:在用户注册,登录页面的时候使用,防止暴力请求。减轻服务器等待压力
          防止CSRF的一种方式
    
  • 过滤器

      {var|lower}} 小写
          {{var|upper }}  大写
          {{var|join}}
              格式:列表|join:"#"
          {{var|default}}
              如果一个变量没有被提供,或者值为false,空,可以使用默认值
              格式:{{var|default:"#"}}
    
          {{var|date}}
              根据给定格式转换为日期为字符串
              格式:
                  {{vardata|data:'y-m-d'}}
          {{var|escape}}
          {{var|safe}}
              HTML转义
              示例:{{code|safe}}
    
    
          {{var|add}}
              加减
              格式:
              {{num|add:-数}}
              {{num|add:数}}
          {var|divisibleby}
              基数,偶数
              格式:
                  {%表达式|divisibleby:2%}
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值