从2021年9月2日发文至今,Python系列(包括代码在内)共计90472个字、四十八篇!
1. 常用标签
标签在渲染的过程中提供任意的逻辑。
标签语法:由{% %}来定义的,例如:{%tag%} {%endtag%}
如
{% if %} {% elif %} {% else %} {% endif %}
:判断是否满足条件。
{% ifequal %} {% endifequal %}
:判断是否相等。
{% for i in li1 %} {% endfor %}
:轮流取出列表中的数据li1,用变量i来接收。
{% for i in li1 %} {% if forloop.first %} {% elif forloop.last %} {% else %} {% endif %} {% endfor %}
:轮流取出列表中的数据li1,用变量i来接收,第一个数据、最后一个数据、除了第一个和最后一个数据。
{% for n in null %}{% empty %}{% endfor %}
:如果有数据,执行这个;如果无数据,执行empty。
<a href="{% url 'new' %}">我要去新网站首页</a>
: a标签使用路由的name方式进行跳转,不需要复制网页链接。
<a href="{% url 'slide' 'chenhong'%}">我要去轮播图网页</a>
:这里调用的是需要添加参数的路由,所以需要加参数。
{% with name as n %}{% endwith %}
:重命名,缓存一个变量。
{% autoescape off %}{% endautoescape %}
:关闭自动转义。
![](https://img.haomeiwen.com/i26973252/d83e929b7ded104f.png)
分路由book的模板文件index.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>django</title>
</head>
<body>
{# 模板标签:一、常用模板标签#}
{% if name == 'python chenhong' and age == 20 %}
大家好!
{% elif name != 'chenhong' %}
大家也好!
{% else %}
我不认识你!
{% endif %}
{% ifequal name 'python chenhong1' %} {#如果不等于则是 ifnotequal#}
chenhong今年20岁
{% endifequal %}
{% for i in li1 %}
{{ i }}<br>
{% endfor %}
{% for i in li1 %}
{% if forloop.first %}
这第一个数据{{ i }}<br>
{% elif forloop.last %}
这是最后一个数据{{ i }}<br>
{% else %}
这是中间的数据{{ i }}<br>
{% endif %}
{% endfor %}
{% for i in li1 %}
{{ i }}的下标为{{ forloop.counter0 }}<br> {# forloop.counter:下标从1开始,forloop.counter0:下标从0开始#}
{% endfor %}
{% for i in li1 %}
{% for j in tu1 %}
{% if forloop.parentloop.counter0 == 2 %}
{{ i }}对应{{ j }}<br>
{% else %}
我是其他行数据{{ i }}对应的{{ j }}<br>
{% endif %}
{% endfor %}
{% endfor %}
{% for n in null %}
有数据{{ n }} {# 如果有数据,执行这个 #}
{% empty %}
当前数据为空 {# 如果无数据,执行这个 #}
{% endfor %}
{#<a href="http://127.0.0.1:8000/book/new_book/" target="_blank">我要去新网站首页</a> {# 通过a标签设置路由的方式访问网站,不建议这样做 #}
{# 无参数的情况下 #}
<a href="{% url 'new' %}">我要去新网站首页</a> {# a标签使用路由的name方式进行跳转,不需要复制网页链接 #}
{# 有参数的情况下 #}
<a href="{% url 'slide' 'chenhong'%}">我要去轮播图网页</a>
{# 重命名,缓存一个变量 #}
{% with name as n %}
我是{{ n }}
{% endwith %}
{# 关闭自动转义 #}
{# 方式一 #}
{#{{ html|safe }}#}
{# 方式二,通过autoescape进行开启和关闭-on和off #}
{% autoescape off %}
{{ html }}
{{ html }}
{% endautoescape %}
分路由book的urls.py代码:
from django.urls import path
# 从同级目录下导入文件
from . import views
urlpatterns = [
path('old_book/',views.old_book),
path('new_book/',views.new_book,name='new'),
path('slide/<name>/',views.slide,name='slide'), # 接收有参数的情况
path('temp_1/',views.temp_1),
]
这个定义是刻意模糊的。 例如,一个标签可以输出内容,作为控制结构,例如“if”语句或“for”循环从数据库中提取内容,甚至可以访问其他的模板标签。
2. 模板的继承与使用
Django模版引擎中最强大也是最复杂的部分就是模版继承了。 模版继承可以让你创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 blocks 。
先在如下目录创建三个HTML文件:
![]()
分路由book的urls.py文件:
from django.urls import path
# 从同级目录下导入文件
from . import views
urlpatterns = [
path('child_1/',views.child_1),
]
分路由book的views.py文件:
from django.shortcuts import render
def child_1(request):
return render(request,'book/child_1.html')
templates中创建的父级模板base.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>
{% block title %}
这个是默认的标题
{% endblock %}
</title>
</head>
<body>
{% block head %}
这是默认头部样式<br>
{% endblock %}
{% block content %}
这是默认内容主体<br>
{% endblock %}
{% block bottom %}
这是默认底部样式<br>
{% endblock %}
我是外面的样式
</body>
</html>
模板继承使用extends标签实现。通过使用block来给子模板开放接口。
1、extends必须是模板中的第一个出现的标签。
2、子模板中的所有内容,必须出现在父模板定义好的block中,否则django将不会渲染。
3、如果出现重复代码,就应该考虑使用模板。
4、尽可能多的定义block,方便子模板实现更细的需求。
5、如果在某个block中,要使用父模板的内容,使用block.super获取。
6、{% include 'book/child_2.html' %}
:在child_1.html文件里引用child_2.html文件的内容。
templates中创建的子级模板child_1.html文件:
{#模板标签:二、模板的继承与引用#}
{# extends必须是第一个出现的标签,继承父类模板整个文件。 #}
{% extends 'book/base.html' %}
{# block里面的内容是可以修改的,而不是只能够继承,名字需和父级模板统一 #}
{% block title %}
我是child1的标题
{% endblock %}
{% block head %}
{{ block.super }} {# 继承了父类的头部 #}
我是child1的头部<br>
{% endblock %}
{% block bottom %}
{{ block.super }} {# 继承了父类的底部 #}
我是child1的底部<br>
{# 通过include进行模板的引用 #}
{% include 'book/child_2.html' %}
{% endblock %}
{# 这个是不会被继承的 #}
{{ 我是不会被继承的 }}
templates中创建的子级模板child_2.html文件:
{#模板标签:二、模板的继承与引用#}
这是child2的页面底部 <br>
文章到这里就结束了!希望大家能多多支持Python(系列)!六个月带大家学会Python,私聊我,可以问关于本文章的问题!以后每天都会发布新的文章,喜欢的点点关注!一个陪伴你学习Python的新青年!不管多忙都会更新下去,一起加油!
Editor:Lonelyroots
网友评论