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制作最美应用的爬虫
Oct 28 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
对Python通过pypyodbc访问Access数据库的方法详解
Oct 27 Python
使用python进行拆分大文件的方法
Dec 10 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
python numpy 按行归一化的实例
Jan 21 Python
基于python操作ES实例详解
Nov 16 Python
python生成器用法实例详解
Nov 22 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
Apr 27 Python
Python+PyQt5实现灭霸响指功能
May 25 Python
python 算法题——快乐数的多种解法
May 27 #Python
用Python监控你的朋友都在浏览哪些网站?
Python图片处理之图片裁剪教程
用Python进行栅格数据的分区统计和批量提取
手把手教你怎么用Python实现zip文件密码的破解
Python基础学习之奇异的GUI对话框
教你使用pyinstaller打包Python教程
You might like
星际争霸任务指南——神族
2020/03/04 星际争霸
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
srcElement表格样式
2006/09/03 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
js获取ip和地区
2017/03/10 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
新学期班主任寄语
2014/01/18 职场文书
六年级学生评语
2014/04/22 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python
Go 内联优化让程序员爱不释手
2022/06/21 Golang