#前言:
该博客是关于Django基本操作的模板篇,前面讲了很多其它操作,有兴趣可以翻阅主页自行观看。如果您在我的博客中发现任何错误、不准确或者需要补充的地方,请不要犹豫,提出来让我知道。我认识到自己在语言表达、逻辑思维和知识储备方面都有待提高和学习,所以非常感谢您的反馈,这将帮助我改进并提升我的文章质量。
一、Django模板介绍:
在Django中模板是用于动态生成 HTML、XML 等结构化文本的一种机制。在 Django 中,模板允许我们将文档的表现形式与内容分离开来,使得网页的生成更加灵活和易于维护。、
二、具体操作:
模板语法(DTL)主要包括 : 变量 , 注释 , 标签 ,流程控制 , 过滤器 , 模板继承。
1、注释,变量:
在Django的模板中,注释用:{# 注释内容 #},但是这样只能注释一行。要注释多行就用:
{% comment %}
具体内容
{% endcomment %}
<body>
<!-- 这个是前端中的注释 -->
{# 这个是 django 提供的模板语法注释 #}
{% comment 这个是开始标签%}
被 comment 标签包含起来的都会被注释掉
下边这个是结束标签
{% endcomment %}
</body>
变量:被包围在 {{
变量 }}
中。
from django.shortcuts import render
def template_view(request):
name = '小龙'
age = 20
gender = '男'
# 可以将函数或者类传递到 html 模板中
def demo():
return '我是一个函数'
class Demo:
def __init__(self):
self.name = '龙'
def eat(self):
return '等下一起去吃 椰子鸡'
obj = Demo()
ls = ['小龙','小蔡','龙哥']
return render(request , 'bianliang.html' , locals())
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div style="color:red">
<p>变量</p>
<p>姓名:{{ name }}</p>
<p>年龄:{{ age }}</p>
<p>性别:{{ gender }}</p>
</div>
<div style="color: blue">
<p>调用函数</p>
<p>{{ demo }}</p>
<p>调用类</p>
<p>{{ Demo.eat }}</p>
<p>{{ Demo.name }}</p>
<p>调用对象</p>
<p>{{ obj.eat }}</p>
<p>{{ obj.name }}</p>
</div>
<div style="color: green">
<p>列表数据</p>
<p>{{ ls }}</p>
<p>通过下标获取列表中的数据</p>
<p>{{ ls.1 }}</p>
</div>
</body>
</html>
注意:
上述代码中第一个div标签里面是对变量的直接调用。
第二个div标签里面是对视图类的调用它可以直接调用类对象。而对视图函数里面再加一个视图函数则无法调用该视图函数里面的变量。
第三个div标签是对元组之类的变量也可以直接调用。
2、过滤器:
过滤器用于转换变量和标签参数的值。
过滤器的格式:{{ 变量名|过滤器名称:数据 }}
主要有:
1.default过滤器:如果变量为空或者为False的时候会响应自己设置的默认值。
2.length过滤器:返回变量的数据长度。
3.random过滤器:在指定序列中随机返回一个。
4.safe过滤器:可以将带有html标签的字符串进行格式转换。
<div style="color: red">
<p> default 过滤器</p>
<p>当变量为空(None)或者为 False 的时候响应设置的默认值</p>
{{ sex|default:'靓仔' }}
{{ age|default:18 }}
</div>
<div>
<p> length 过滤器</p>
<p>返回变量的数据长度</p>
{{ name|length }}
{{ ls|length }}
</div>
<div style="color: pink">
<p> random 过滤器</p>
<p>在指定的序列中随机返回一个数据</p>
{{ ls|random }}
</div>
<div style="color: #096">
<p> safe 过滤器</p>
<p>可以将带有 html 标签的字符串进行格式转换</p>
{{ html_str }}<br>
{{ html_str|safe }}
</div>
3、自定义过滤器:
自定义过滤器就是自己创建一个过滤器,它的使用和上述一样。
在响应视图的应用下创建 :templatetags 包(这个名字不能出现变化),在这个包内创建一个 py 文件。
from django import template
register = template.Library()
# 自定义过滤器
# @register.filter() 实现过滤器
# name 属性是定义过滤器名称
@register.filter(name='max_number')
def num(num_1 , num_2):
# 过滤器接收参数最多接收两个
return max(num_1 , num_2)
4 、流程控制:
它的语法和python的差异不大就是得放在{% %}里面,其次还要有一个结束标签:
if判断:
{% if 判断条件 %}
……
{% elif 判断条件 %}
……
{% else %}
……
{% endif %}
for循环:
{% for 变量名 in 可迭代对象 %}
……
{% endfor %}
5 include 标签:
Django中的 {% include %}
标签是一种强大的机制,用于在模板中包含其他模板的内容。它有助于在多个模板中重用相同的代码片段,提高代码的可读性。
-
作用:
{% include %}
标签允许将其他模板文件嵌入到当前模板中。- 这些模板可以是局部模板,也可以是完整的页面模板。
- 通过包含标签,我们可以有效地管理模板的复杂性,避免代码重复。
-
使用方法:
- 在模板中使用
{% include %}
标签时,指定要包含的模板名称。 - 模板名称可以是一个变量,也可以是用单引号或双引号括起来的字符串。
- 例如,如果你有一个名为
temp1.html、temp2.html、temp3.html
的模板文件,你可以这样包含它:
- 在模板中使用
<body>
{# {% include '模板名称' %}#}
{% include 'temp1.html' %}
<p>模板2:123</p>
{# {% include '模板名称' with 参数%} #}
{% include 'temp3.html' with name='阿宸'%}
{% include 'temp3.html' with name=name %}
</body
6、自定义 inclusion_tag:
inclusion_tag 是 Django 中的一种自定义模板标签,它的作用是允许你在模板中重用一块 HTML 片段,并将其渲染为一个独立的小模块。让我们来详细了解一下:
-
简介:
inclusion_tag
允许你渲染一个模板,然后将渲染结果作为一个小的 HTML 模块返回给主页面。- 这对于在不同位置重复使用相同的 HTML 片段非常有用。
-
使用场景:
- 你可以在主页面中使用一定的语法给一个参数,调用某个函数,这个函数可以根据传入的参数进行逻辑处理,然后生成一些数据。
- 这些数据最终会被渲染到一个小的 HTML 模块中,然后返回给主页面,以便在调用的位置进行渲染。
# 自定义 inclusion_tag 标签
# 参数 指定局部标签的文件名称
@register.inclusion_tag('tag.html')
def tag_demo():
ls=[
'星期一',
'星期二',
'星期三',
'星期四',
'星期五',
'星期六',
'星期日'
]
return locals()
7、模板继承:
子模板继承语法:{% extends '父模板名称' %}
重写模板:{% block 名称 %}……{% endblock 名称%}
被这个标签包含的内容,子模板是可以重写的。
二、总结:
该篇博客主要介绍了在Django操作中模板的一些操作,其中包括:变量、过滤器、自定义过滤器、流程控制、include标签、自定义inclusion_tag、模板继承等。
如果各位大佬发现任何错误或不当之处,欢迎各位大佬指导。在未来的更新中,我们将努力完善内容,确保提供准确、清晰的信息,以帮助读者更好地理解和应用Django。