1. MTV
Django 是一个基于 MTV(Model-View-Template) 架构的框架。
- Model:模型负责处理数据。从数据库读取数据,并将数据返回给视图。
- View:视图决定将哪些数据展示给用户。
- Template:模板决定数据如何展示。
2. 模板
Django 的模板一般是一个 html
文件。不过它也可以是任何基于文本的格式,如电子邮件、JavaScript 和 CSV 等,这取决于我们想要生成的文件的格式。
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">
<title>{% block title %}My amazing site{% endblock %}</title>
</head>
<body>
<div id="sidebar">
{% block sidebar %}
<ul>
<li><a href="/">Home</a></li>
<li><a href="/blog/">Blog</a></li>
</ul>
{% endblock %}
</div>
<div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
HTML(超文本标记语言——HyperText Markup Language)是构成 Web 世界的一砖一瓦。常见的网页一般都是由 HTML 、 CSS 和 JavaScript 组成的。
3. 语法
3.1 变量 {{ variable }}
变量名可以由字母、数字、字符和下划线(_
)组成,但不能以下划线开头。
3.2 过滤器 {{ variable|filter }}
3.2.1 add
num = 1
arr1 = [1, 2]
arr2 = [3, 4]
{{ num|add:1 }} # => 2
{{ arr1|add:arr2 }} # => [1, 2, 3, 4]
如果两个值可以转换为整数,则会得到它们的和;如果不能则将尝试拼接两个值(字符串、列表);如果仍然失败,将会得到一个空字符串。
3.2.2 capfirst
name='django'
{{ name|capfirst }}
# => 'Django'
首字母大写。
3.2.3 cut
value='Django Rest Framework'
{{ value|cut:' ' }}
# => 'DjangoRestFramework'
删除字符串中删除给定的值。
3.2.4 date
time=datetime.now()
{{ time|date:'SHORT_DATE_FORMAT' }}
# => 04/17/2021
3.2.5 default
default=''
{{ default|default:'无' }}
# => '无'
如果变量的值为 False
或者 空字符串,则返回设置的默认值;否则返回变量本身的值。
3.2.6 default_if_none
value=None
{{ value|default_if_none:'空' }}
# => '空'
如果变量的值为 None
,则返回设置的默认值;否则返回变量本身的值。
3.2.7 dictsort
& dictsortreversed
students = [
{'name': 'Zack', 'age': 30},
{'name': 'Alan', 'age': 20},
{'name': 'Bill', 'age': 25},
]
{% for student in students|dictsort:'name' %}
<p>- {{ student.name }}: {{ student.age }}</p>
{% endfor %}
"""
=>
- Alan: 20
- Bill: 25
- Zack: 30
"""
dictsort
: 获取一个字典列表,并按照参数中给出的键排序返回该列表。
dictsortreversed
跟 dictsort
一样,只是返回的值是倒序的。
3.2.8 filesizeformat
fileSize = 1234567890
{{ fileSize|filesizeformat }}
# => 1.1 GB
将文件大小(以 bytes 为单位的数字)转换成常用的格式。
3.2.9 first
& last
list = [1234567890, 123, 456]
{{ list|first }} # => 1234567890
{{ list|last }} # => 456
first
: 返回列表的第一个值。
last
: 返回列表的最后一个值。
3.2.10 floatformat
value1 = 3.1415926
value2 = 3.000011
value3 = 3.000000
{{ value1|floatformat }} # => 3.1
{{ value2|floatformat:'-2' }} # => 3.00
{{ value3|floatformat:'-2' }} # => 3
四舍五入。
- 当不使用参数时,将浮点数四舍五入并保留一位小数,如果是整数则不显示小数位。
- 当参数为正整数
n
时,四舍五入并保留n
位小数,即使是整数,也要显示小数位。 - 当参数为
0
时,四舍五入为整数。 - 当参数为负整数
n
时,四舍五入并保留n
位小数,如果是整数则不显示小数位。
3.2.11 join
nav = ['Home', 'blog', '2021']
{{ nav|join:'/' }}
# => 'Home/blog/2021'
把列表连接成一个字符串,就像 Python 的 str.join(list)
一样。
3.2.12 length
title = 'Django'
{{ title|length }}
# => 6
返回字符串或列表的长度。未定义的变量返回 0。
3.2.13 linebreaks
& linebreaksbr
html = 'Hello! \n Django'
{{ html|linebreaks }} # => <p>Hello! <br> Django</p>
{{ html|linebreaksbr }} # => 'Hello! <br> Django'
linebreaks
:将文本转换为 HTML
。换行符转换为 <br>
,段落转换为 <p></p>
。
linebreaksbr
:只将文本中的换行符转换为 <br>
。
3.2.14 lower
value = 'Django Rest Framework'
{{ value|lower }}
# => 'django rest framework'
字符串转换为全小写。
3.2.15 make_list
text = 'Django Rest Framework'
num = 996
{{ text|make_list }} # => ['D', 'j', 'a', 'n', 'g', 'o', ' ', 'R', 'e', 's', 't', ' ', 'F', 'r', 'a', 'm', 'e', 'w', 'o', 'r', 'k']
{{ num|make_list }} # => ['9', '9', '6']
把字符串或数字转换为列表。
3.2.16 pluralize
message_num = 10
You have {{ message_num }} message{{ message_num|pluralize }}
# => 'You have 10 messages'
如果值不是 1、'1' 或长度为 1 的对象,则返回复数后缀。 默认情况下,后缀为 's'。
如果单词的复数后缀是 'es',则可以传递一个参数 'es' 给过滤器:
box_num = 10
You have {{ box_num }} box{{ box_num|pluralize:'es' }}
# => 'You have 10 boxes'
对于更复杂的复数形式,可以传递两个参数,分别指定单数和复数后缀:
cherry_num = 10
You have {{ cherry_num }} cherr{{ cherry_num|pluralize:'es' }}
# => 'You have 10 cherries'
3.2.17 pprint
students = [
{'name': 'Zack', 'age': 30},
{'name': 'Alan', 'age': 20},
{'name': 'Bill', 'age': 25},
]
# => [{'age': 30, 'name': 'Zack'}, {'age': 20, 'name': 'Alan'}, {'age': 25, 'name': 'Bill'}]
用于调试。
3.2.18 random
value = ['Home', 'blog', '2021']
{{ value|random }}
# => 'blog'
随机返回列表中的一个值。
3.2.19 slice
value = ['Home', 'blog', '2021']
{{ value|slice:':2' }}
# => ['Home', 'blog']
列表切片。
3.2.20 title
value = 'the Django REST framework'
{{ value|title }}
# => 'The Django A Rest Framework'
让每个单词首字母都大写,其余字母都小写。
网友评论