首页 > 其他 > 详细

Tepmplate 模板渲染

时间:2021-04-04 21:24:36      阅读:29      评论:0      收藏:0      [点我收藏+]

Template 模板渲染

一 渲染过程

后台数据 返回给前端html页面,进行字符串替换后(模板渲染),再交给浏览器

模板html语法

1.支持 数字,字符串,列表,字典,对象
{{ 变量}} {% 逻辑 %}
2.调用 : 万能的点
后台数据:
def get(self,request):
      num = 100
      name = ‘周雅婷‘
      lst = [‘可爱‘,‘臭宝‘,‘小屁仔‘]
      dic ={‘name‘:‘小宝贝‘,‘age‘:18,‘hobby‘:‘看电影‘}
      class Animal:
          def __init__(self):
              self.name = ‘lion‘
          def eat(self):
              return ‘shi‘
      a = Animal()
      return render(request,‘index.html‘,{‘num‘:num,‘name‘:name,
                        ‘lst‘:lst,‘dict‘:dic ,‘object‘:a   }
html代码:
<p> {{ num }}</p>
<p> {{ name }} </p>
<p> {{ lst.2 }} </p> 列表取值 直接.索引
<p> {{ dict.name}} </p>
<p> {{ object.eat}}</p> 对象只能调用无参的方法
简写: locals() 获取函数内部所有变量的值,并加工成{‘变量名‘:‘变量值‘}这样的字典
把变量名作为键,值作为值
?

过滤器(大概60多种)

语法: 无参数 {{变量1|过滤器}} 有参数 {{变量1|过滤器:参数}} 
长度 length eg: {{name|length}}
默认值 default eg:{{xx|default:‘nothing‘}}
切片 slice eg: {{word|slice:‘2:-1‘}}
截断字符 <p>{{ word|truncatechars:‘9‘ }}</p>
截断单词 <p>{{ word|truncatewords:‘3‘ }}</p>
切除 cut 切除空格 {{word|cut:‘ ‘}}
列表拼接 join <p>{{ lst|join:"+" }}</p>
import datetime
now = datetime.datetime.now()
时间 <p>{{ now|date:‘Y-m-d H-i-s‘ }}</p>
安全 safe {{tag|safe}} xss攻击 标签字符串
filesizeformat 文件大小

for标签

语法; {% %} {}标签
for循环
{% for name in lst %}
    <li>{{ name }}</li>
  {% endfor %}
字典循环
{% for k,v in userinfo.items %} userinfo.keys userinfo.values
      <li>{{ k }}:{{ v }}</li>
  {% endfor %}
循环
每一个{% for循环%}必须对应一个{% endfor %}
每一个{% if循环 %}必须对应一个{% endif %}

forloop

{{forloop.counter}} 从1,开始计数
{{forloop.counter0}} 从0开始计数
{{forloop.revcounter}} 4,3,2,1
{{forloop.revcounter0}} 3,2,1,0
{{forloop.first}} 是第一次循环就是true
{{forloop.last}} 是最后一次循环就是true
{{forloop.parentloop.counter}}
?

for...empty

{% for foo in d3 %}
    <li>{{ foo }}</li>
      {% empty %} //如果数据为空提示
      <li>啥也没有</li>
  {% endfor %}
?

if循环

if语句支持and,or,==,<,>,>=,<=,!=, in ,not in,is,is not判断,注意条件两端都有空格
{% if d2|length > 3 %}
  <a href="">大于3</a>
  {% elif d2|length == 3 %}
  <a href="">等于3</a>
  {% else %}
  <a href="">小于3</a>
{% endif %}

with语句

起别名,在with语句体中可以使用, 等号两边不能加空格
{% with 别名=userinfo.name %}
  <h1>{{ name }}</h1>
{% endwith %}
{% with userinfo.name as 别名 %}
  <h1>{{ name }}</h1>
{% endwith %}

注意事项

1.if 不支持连续判断 if a>b>c
2. 属性的优先级大于方法的
d4 ={‘items‘:‘xx‘}
{% for iin d4.items%} 字典的items方法
d4.items 会使用属性 xx

csrf_token 安全认证机制

表单下面加{% csrf_token%}

模板继承

{% extends ‘base.html‘%} 模板继承
留钩子 一般留三个,可以多留几个
?
{% block content %}
{{ block.super}} 留着模板内容
替换html
{% end block%}
?
{% block css %}
替换html
{% endblock%}
?
{% block js %}
替换html
{% endblock%}
?
2.起名字 留多个钩子的时候名字不能一样
{% block content%}
{% endblock content%}
{% block content1 %}
{% endblock content1 %}

组件

可以降常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,在需要使用的地方导入即可
{% include ‘index.html‘%}

 

Tepmplate 模板渲染

原文:https://www.cnblogs.com/learn-record/p/14615644.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!