Python Django框架介绍之模板标签及模板的继承


Posted in Python onMay 27, 2021

一、标签语法

由%}和 {% 来定义的,例如:{%tag%} {%endtag%},完整的标签有开始就有结束,如条件语句,有条件判断的开始,也对应有条件的结束。

二、常见标签

if条件判断

  • if/elif/else:可以使用and/or/in/not/==/!=/<=/>=,来进行判断。ifequal/ifnotequal

for循环

  • for ... in ...:和python中的用法一样。
  • forloop.counter:当前迭代的次数,下标从1开始。1,2,3....
  • forloop.counter0:当前迭代的次数,下标从0开始。指定下标,上面一种不指定的默认从1开始
  • forloop.revcounter:与forloop.counter一样,不同在于下标呈倒序,从大到小。
  • forloop.revcounter0:forloop.counter0一样,不同在于下标呈倒序,从大到小。
  • forloop.frist:返回一个布尔值,如果是第一次迭代,返回true,否则返回false。
  • forloop.last:返回布尔值,如果是最后一次迭代,返回true,否则返回false
  • forloop.parentloop:如果发生多层for循环嵌套,那么这个变量返回的是上一层的for。
  • for...in...empty...:如果没有数据,跳到empty中。

其他重要标签

load:加载第三方标签。常见用的是{% load static%}

url:返回一个命名了的URL的绝对路径。

with:缓存一个变量。

autoescape:开启和关闭自动转义。

三、标签例子

if条件标签代码例子

#  views.py文件
def testif(request):
    complex = {
        'name':'python',
    }
    return render(request,'标签-if.html',complex)
 
#  urls.py文件
urlpatterns = [path('testif/', views.testif),]
<!--if标签模板文件-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>if模板</title>
    <style>span{font-size: 40px;color: #d70b35;}</style>
</head>
<body>
    {% if name == "python" %}
        这是<span>{{name}}</span>页面
    {% elif name == "django" %}
        这是<span>{{name}}</span>页面
    {% else %}
        确定是<span>{{name}}</span>吗?
    {% endif %}
</body>
</html>

  Python Django框架介绍之模板标签及模板的继承

for 循环标签代码例子

#  views.py文件
def testfor(request):
    ls = ['1','2','3','4','5']
    complex ={
        'ls':ls,
    }
    return render(request,'标签-for.html',complex)
 
#  urls.py文件
urlpatterns = [path('testfor/', views.testfor),]
<!--for标签模板文件-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>for模板</title>
    <style>a{font-size: 25px;}</style>
</head>
<body>
{% for i in ls %}
    {% if forloop.counter == 3 %}
        <a href="https://www.baidu.com" rel="external nofollow" >百度</a><br>
    {% else %}
        <a href="https://blog.csdn.net/" rel="external nofollow" >CSDN</a><br>
    {% endif %}
{% endfor %}
</body>
</html>

  Python Django框架介绍之模板标签及模板的继承

url页面转换标签例子

注意:亲测。。。使用url页面转换标签的时候,注意模板中的引用模板链接名称应该是urlpatterns中path的name的值,如果是直接使用接口名称会报错

错误演示

Python Django框架介绍之模板标签及模板的继承

Python Django框架介绍之模板标签及模板的继承

正确演示

Python Django框架介绍之模板标签及模板的继承

Python Django框架介绍之模板标签及模板的继承

代码

##  views.py文件
def testurl(request):
    return render(request,'URL页面转换.html')
 
##  urls.py 文件
urlpatterns = [path('testurl/', views.testurl),]
<!--  url标签模板文件  -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>URL页面转换</title>
    <style>
        a{font-size: 25px;color: #10e59d
        }
    </style>
</head>
<body>
    <a href="/index/" rel="external nofollow" >index模板</a><br>
    <a href="{% url 'temp' %}" rel="external nofollow" >使用ur标签temp模板</a><br>
    <a href="{% url 'test' 999 %}" rel="external nofollow" >使用url标签进行添加参数传递</a>
</body>
</html>

四、模板的继承

Django模版引擎中最强大也是最复杂的部分就是模版继承了。使用模板的作用在于提高代码的复用性。 模版继承可以让你创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 blocks。

模板继承使用extends标签实现。通过使用block来给子模板开放接口。

1、extends必须是模板中的第一个出现的标签。

2、子模板中的所有内容,必须出现在父模板定义好的block中,否则django将不会渲染。

3、如果出现重复代码,就应该考虑使用模板。

4、尽可能多的定义block,方便子模板实现更细的需求。

5、如果在某个block中,要使用父模板的内容,使用block.super获取。

代码例子

<!-- 模板的引用页 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>引用页</title>
    <style>
        .p2{
            font-size: 25px;
            color: blue;
        }
    </style>
</head>
<body>
    <h style="font-size:40px;color:red;">这是引用页的内容</h>
</body>
</html>
<!--  模板的继承页  -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{%  block title %}默认标题{% endblock %}</title>
    <style>
        .p1{font-size: 30px;color: #8dff50
    }
        span{
            font-size: 25px;
            color: darkkhaki;
        }
    </style>
</head>
<body>
{% block content %}
    <span>这是默认内容</span>
{% endblock %}
{% block demo %}
    <span>这是演示内容</span>
{% endblock %}
</body>
</html>
<!--  模板继承的主页  -->
{% extends '模板/继承页.html' %}
{% block title %}主页(继承与引用){%  endblock  %}
{% block content %}
    <p class="p1">这是通过继承父类的:{{ block.super }}</p><br>
    <p class="p1">这是子模版的内容,没有写block就不会显示</p><br>
{% endblock %}
{% block demo %}
    <p class="p2">这是通过include引用的其他模板的内容:{% include '模板/引用页.html' %}</p>
{% endblock %}

演示结果

Python Django框架介绍之模板标签及模板的继承

通过设置css样式,可以看出,继承主页继承和引用了继承模板文件及引用模板文件中的css样式。

到此这篇关于Python Django框架介绍之模板标签及模板的继承的文章就介绍到这了,更多相关Django框架之模板标签及模板的继承内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python正则表达式匹配ip地址实例
Oct 09 Python
python列出目录下指定文件与子目录的方法
Jul 03 Python
jupyter安装小结
Mar 13 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 Python
python write无法写入文件的解决方法
Jan 23 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
Apr 01 Python
在服务器上安装python3.8.2环境的教程详解
Apr 26 Python
快速解释如何使用pandas的inplace参数的使用
Jul 23 Python
Python自动发送和收取邮件的方法
Aug 12 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 Python
python 算法题——快乐数的多种解法
May 27 #Python
用Python监控你的朋友都在浏览哪些网站?
Python图片处理之图片裁剪教程
用Python进行栅格数据的分区统计和批量提取
手把手教你怎么用Python实现zip文件密码的破解
Python基础学习之奇异的GUI对话框
教你使用pyinstaller打包Python教程
You might like
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
用javascript控制iframe滚动的代码
2007/04/10 Javascript
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
React学习笔记之高阶组件应用
2018/06/02 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
2019/09/12 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
详解Python locals()的陷阱
2019/03/26 Python
python实现AES加密与解密
2019/03/28 Python
python 一维二维插值实例
2020/04/22 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
葡萄牙语专业个人求职信
2013/12/10 职场文书
2014新年寄语
2014/01/20 职场文书
2014年业务工作总结
2014/11/17 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
DIY胆机必读:各国电子管评价
2022/04/06 无线电
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers