DAY04 模板

1 公用模板可以放置在根目录的templates中

但是要注意修改templates的dirs,引导程序启动时优先去根目录中寻找模板

2 模板数据传递及渲染

2.1 数据传递

2.1.1 基本传递

def demo(request):
    list = [11,22,33]
    return render(request, 'demo.html', {'list':list})
    
 <div>{{ list }}</div>

2.1.2 for循环

def demo(request):
    list = [11,22,33]
    return render(request, 'demo.html', {'list':list})
    
 <div>
      {% for i in list %}
            <li>{{ i }}</li>
      {% endfor %}
</div>

2.2 模板继承

模板只能继承1个

2.3 片段导入

include可以多次导入或导入多个

3 模板渲染的易错点

def demo(request):
    
    return render(request, 'demo.html', {'info':'999'})    # info整形

    return render(request, 'demo.html', {'info':'张三'})    # info字符串形式

    return render(request, 'demo.html', {'info':[11,22,33]})    # info列表
<body>
    <h1> {{ info }} </h1>   # 所有内容都可以正常显示,因为读取内容后完成渲染,且<h1>标签中可以直接写字符串,不用加引号

    <script src="www.abcd.js"></script>  #如果js文件中有{{ info }}或是其他需要渲染的内容,无法显示,因为读取内容后,会直接传给前端,前端根据需要再访问地址,获取内容

    <script>
        alert({{ info }});  # 如果是数字可以正常显示,列表也可以正常显示(js读取为数组),但是字符串会报错,字符串必须加引号
        
        alert('{{ info }}');  # info是字符串的处理方式
    </script>
</body>

4 模板函数

4.1 在app目录下创建templatetags,只能这个名字

4.2 在该路径下创建任意py文件

4.2.1 simple_tag

from django.template.library import Library

register = Library()  # 只能叫register


@register.simple_tag()
def my_func(v1, v2, v3):
    return "哈哈哈哈" + v1 + v2 + v3
<body>
    <div>{% my_func "张三" "李四" "王二" %}</div>
</body>

4.2.2 inclusion_tag

return render(request, 'demo.html', {'num':[11,22,33,44]})
@register.inclusion_tag("xo.html")
def my_xo(num):
    return {"x1": [item for item in num if item > 22]}
xo.html

<ul>
    {% for item in x1 %}
        <li>{{ item }}</li>
    {% endfor %}
</ul>
<body>
    <div>{% my_xo num %}</div>
</body>

4.2.3 filter

@register.filter
def my_tt(a1, a2):
    return "哈哈哈" + a1 + a2
filter支持在模板中作为条件放在if后

<body>
    <div>{{ "alex"|my_tt:"xxxx" }}</div>

    {% if "alex"|my_tt:"xxxx" %}
        <h1>真</h1>
    {% else %}
        <h1>家</h1>
    {% endif %}
</body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值