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字典的常用操作方法小结
May 16 Python
python使用tensorflow保存、加载和使用模型的方法
Jan 31 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
python学生信息管理系统(完整版)
Apr 05 Python
python检测IP地址变化并触发事件
Dec 26 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
python基于K-means聚类算法的图像分割
Oct 30 Python
Python栈的实现方法示例【列表、单链表】
Feb 22 Python
QML实现钟表效果
Jun 02 Python
pandas DataFrame运算的实现
Jun 14 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 Python
python 算法题——快乐数的多种解法
May 27 #Python
用Python监控你的朋友都在浏览哪些网站?
Python图片处理之图片裁剪教程
用Python进行栅格数据的分区统计和批量提取
手把手教你怎么用Python实现zip文件密码的破解
Python基础学习之奇异的GUI对话框
教你使用pyinstaller打包Python教程
You might like
深入PHP autoload机制的详解
2013/06/09 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
PHP7 windows支持
2021/03/09 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
17个Python小技巧分享
2015/01/23 Python
python标准算法实现数组全排列的方法
2015/03/17 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
python制作填词游戏步骤详解
2019/05/05 Python
pandas删除行删除列增加行增加列的实现
2019/07/06 Python
Python解析json代码实例解析
2019/11/25 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
家居饰品店创业计划书
2014/01/31 职场文书
考试作弊检讨书大全
2014/02/18 职场文书
优秀经理获奖感言
2014/03/04 职场文书
安全演讲稿大全
2014/05/09 职场文书
教师反腐倡廉演讲稿
2014/09/03 职场文书
2016公司年会主持词
2015/07/01 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript