• Django——模板


    Django——模板

    Django 提供一种动态生成 HTML 页面 —— 模板

    1、模板语言

    模板语言(DTL): 变量 , 注释 , 标签 , 过滤器 , 模板继承

    1、变量

    <body>
    
    {# 这种是Django中模板语言的注释 #}
    <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.name }}p>
        <p>{{ Demo.eat }}p>
        <p>调用对象p>
        <p>{{ ek.name }}p>
        <p>{{ ek.eat }}p>
    div>
    <div>
        <p>列表p>
        <p>{{ ll }}p>
        <p>通过下标获取列表中的数据p>
        <p>{{ ll.1 }}p>
    div>
    body>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    def template_view(request):
    
        name = '阿宸'
        age = 17
        gender = '男'
    
        # 可以将函数,类传递到 html 模板中
        def demo():
            return '你好呀'
    
        class Demo:
            def __init__(self):
                self.name = '尔康'
    
            def eat(self):
                return "等下一起去吃KFC"
    
        ek = Demo()
    
        ll = ['叶晓春','樱岛麻衣','境界']
    
        return render(request , 'template_demo.html' , locals())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    2、过滤器

    过滤器的格式:{{ 变量名|过滤器名称:数据}}

    <body>
    <div style="color: red">
        <p>default 过滤器p>
        <p>当变量为空或者为 False 的时候响应为设置的默认值p>
        {{ sex | default:'靓仔' }}<br>
        {{ age | default:'18' }}
    div>
    <div style="color: green">
        <p>length 过滤器p>
        <p>返回变量的长度p>
        {{ name | length }}<br>
        {{ ll | length }}
    div>
    <div style="color: black">
        <p>safe 过滤器p>
        <p>可以将带有 html 标签的字符串进行格式转换 p>
        {{ name | safe }}<br>
        {{ html_str }}
        {{ html_str | safe }}
    div>
    <div style="color: #096">
        <p>rendom 过滤器p>
        <p>在指定的列表中随机获取一个数据p>
        {{ ll | random }}
    div>
    body>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    自定义过滤器

    在应用下创建 templatetags 包 , 在这个包内创建一个 py 文件

    from django import template
    
    register = template.Library()
    
    # 自定义过滤器
    # name 是定义过滤器名称的
    @register.filter(name='max_number')
    def num(num_1 , num_2):
        return max(num_1 , num_2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    <div style="color: #096">
        <p>自定义过滤器p>
        {# 导入自定义过滤器的模块 #}
        {% load mytag %}
        {{ age | max_number:27 }}
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、流程控制

    if 判断

    {% if 判断条件 %}
    ……
    {% elif 判断条件 %}
    ……
    {% else %}
    ……
    {% endif %}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    for 循环

    {% for 变量名 in 可迭代对象 %}
    ……
    {% endfor %}
    
    • 1
    • 2
    • 3
    <p>if 判断p>
    {% if age > 18 %}
        <div style="color: red">{{ name }}div>
    {% else %}
        <div style="color: pink">{{ gender }}div>
    {% endif %}
    <div>
        <p>for 循环p>
        {% for i in ll %}
            {# forloop 循环信息 #}
    {#        {{ forloop }}#}
            <li>{{ forloop.counter0 }}:{{ i }}li>
        {% endfor %}
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4、include 标签

    include 标签用户模板的包含

    <div style="color: blue">
        <p>模板Ap>
        <p>作者:{{ name }}p>
        <p>籍贯:{{ add }}p>
        <p>联系地址:{{ tel_addr }}p>
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    <div>
        {#  {% include 'include_demo.html' %} #}
        {#  {% include 'include_demo.html' with 导入模板参数 %} #}
        {% include 'include_demo.html'  with  name='ac' add='广东' tel_addr='广州天河花城大道'%}
    div>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5、自定义 inclusion_tag

    制作局部的 html 标签

    局部标签中的内容需要通过模板引擎来制作

    # 自定义 inclusion_tag
    # inclusion_tag 制定局部标签在哪一个文件中
    @register.inclusion_tag('tag.html')
    def tag_demo():
        ls = ['?:','境界','樱岛麻衣','。。','叶晓春']
        return locals()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    <ul>
        {% for l in ls %}
            <li>{{ l }}li>
        {% endfor %}
    ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    <div>
        {% load mytag %}
        {# 使用自定义的局部标签 , 标签的名称就是自定义标签的函数名 #}
        {% tag_demo %}
    </div>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6、模板继承

    子模板继承语法: {% extends '父模板文件名' %}

    重写模板:{% block 名称 %}{% endblock 名称 %} 被这个标签包含的 , 子模板可以重写

    <body>
    <div>
        <p>阿宸好帅p>
    div>
    
    {% block content %}
    <div>
        <p>等下那个一起去吃KFCp>
        <p>尔康、樱岛麻衣p>
    div>
    {% endblock content %}
    
    <div>
    {% block neiron %}
    {% endblock neiron %}
    div>
    
    body>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    {# 继承模板页面 #}
    {% extends 'f_extend.html' %}
    
    {# 重写父模板中的内容 #}
    {% block content %}
    <div>
        <p>樱岛麻衣:我还有倒三角p>
    div>
    {% endblock content %}
    
    {% block neiron %}
        <p>境界:看回放辣眼睛p>
    {% endblock %}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    大数据-玩转数据-MaxCompute窗口函数
    六、MFC文档类(单文档和多文档)
    【Python开发】Flask开发实战:个人博客(三)
    深度学习(PyTorch)——torchvision中的数据集使用方法
    Java中的设计模式在代码重构中的应用
    linux应用基础
    python/C++二分查找库函数(lower_bound() 、upper_bound,bisect_left,bisect_right)
    MongoDB副本集群节点扩容和收缩
    动态规划解决01背包问题
    理解深度可分离卷积
  • 原文地址:https://blog.csdn.net/xiugtt6141121/article/details/136597272