美文网首页科普百年工匠简书文选
Django 学习笔记-9 Django 模板-1 MTV 、变

Django 学习笔记-9 Django 模板-1 MTV 、变

作者: 游文影月志 | 来源:发表于2021-04-17 07:57 被阅读0次

    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 : 获取一个字典列表,并按照参数中给出的键排序返回该列表。
    dictsortreverseddictsort 一样,只是返回的值是倒序的。

    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'
    

    让每个单词首字母都大写,其余字母都小写。

    相关文章

      网友评论

        本文标题:Django 学习笔记-9 Django 模板-1 MTV 、变

        本文链接:https://www.haomeiwen.com/subject/pkhulltx.html