Django4 -----深入模板

一. 深入模板

(1). 模板语法

view:{"HTML变量名" : "views变量名"}
HTML:{{变量名}} # 注意是双大括号
可以用”.“索引取出对应的元素
可以用”.“键取出对应的值

(2). 过滤器

{{ 变量名 | 过滤器:可选参数 }}

例如:

{{ name|lower }}

{{ name }} 变量被过滤器 lower 处理后,文档大写转换文本为小写。

过滤管道可以被套接,也就是说上一个过滤器管道的输出可以作为下一个管道的输入。
比如:{{ my_list|first|upper }} 的作用就是把第一个元素大写。

当然,有些过滤器是有参数的,需要用双引号(“ ”)来包含它。
比如:{{ bio|truncatewords:“30” }} 这里将显示bio变量的前三十个元素。

常用的过滤器有:length, default, date等等

1). default

作用:为变量提供一个默认值
如果变量的值是False的话,就使用默认值。
比如: {{ name|default:“cannot find the website” }}

2). length

作用:返回对象的长度,适用于字符串和列表。
字典返回的是键值对的数量,集合返回的是去重后的长度。
比如:{{ name|length }}

3). date

作用:根据给定格式对一个日期变量进行格式化。
格式 Y-m-d H:i:s返回 年-月-日 小时:分钟:秒 的格式时间。
比如:{{ time|date:“Y-m-d” }}

(3). 标签

因为标签有点多,个人又比较懒,因此把它放在一份代码里展示了。
farther.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
    <h1>{{ name }}</h1>
    <p>
    {%if num > 90 and num <= 100 %} # 判断
    优秀
    {% elif num > 60 and num <= 90 %}
    合格
    {% else %}
    一边玩去~
    {% endif %}
    </p>
    <p>
    {% for i in list %} # 循环
    {{ i }}
    {% empty %}
    空空如也~
    {% endfor %}
    </p>
</body>
</html>

views.py:

from django.shortcuts import render


def hello_world(request):
    conf_name = 'This is my website!!!'
    views_name = 88
    views_list = ["菜鸟教程", "菜鸟教程1", "菜鸟教程2", "菜鸟教程3", ]
    return render(request, 'farther.html', {'name': conf_name, 'num': views_name, 'list': views_list})

接着在浏览器中运行就可以看到相关的页面了。在这里插入图片描述
(⊙o⊙)…,因为没加CSS和JS,页面略显简陋,问题不大。

(4). 模板继承

模板可以用继承的方式来实现复用,减少冗余内容。
网页的头部和尾部内容一般都是一致的,我们就可以通过模板继承来实现复用。
父模板用于放置可重复利用的内容,子模板继承父模板的内容,并放置自己的内容。

对于父模板:

{% block 名称 %} 
预留给子模板的区域,可以设置设置默认内容,注意不同地方的默认值不能相同
{% endblock 名称 %}

对于子模板:

{% extends "父模板路径"%} 

子模板设置父模板留着的内容,可以使用如下代码:

{ % block 名称 % }
内容 
{% endblock 名称 %}

下面来实操一波,在templates文件夹下创建一个新的H5文件:base.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>Test for parent and child template </p>
    {% block mainbody %}
       <p>original</p>
    {% endblock %}
</body>
</html>

在farther.html加上以下代码:

    {%extends "base.html" %}

    {% block mainbody %}
    <p>继承了 base.html 文件</p>
    {% endblock %}

注意:这几句代码一定要放在第一行或者下的第一行,不然就会报错滴。
打开网页就变成了这样
在这里插入图片描述
其他代码如果不删除的话,也是无效的,因为继承了父模板之后,就只显示父模板。
如果想让其他代码显示的话,可以全写在父模板里。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WFForstar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值