• Django2.x


    Django 模板过滤器

    • 定义: 在变量输出时对变量的值进行处理

    • 作用: 可以通过过滤器来改变变量的输出显示

    • 语法: {{ 变量 | 过滤器1: '参数1' | 过滤器2: '参数2' ... }}

    • 常用过滤器

      过滤器 说明
      lower 将字符串转换为全部小写
      upper 将字符串转换为全部大写
      safe 默认不对变量内的字符串进行HTML转义,传入HTML代码将会被执行
      add:'n' 将 value 的值增加 n
      truncatechars: 'n' 如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将可以翻译的省略号结尾
    # app 中的 urls.py
    from django.urls import path, re_path
    from . import views
    
    urlpatterns = [
    	path('test_filter', views.test_filter),
    ]
    
    
    # app 中的 views.py
    from django.template import loader
    from django.http import HttpResponse, HttpResponseRedirect
    from django.shortcuts import render
    
    def test_filter(request):
        name1 = 'admin'
        name2 = 'ROOT'
        num1 = 10
        str_script = "<script>alert('hello world')</script>"
    
        return render(request, 'test_filter.html', locals())
    
    
    # app 中的 templates/test_filter.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>测试过滤器</title>
    </head>
    <body>
    <h3>原变量: {{ name1 }}, upper后的变量值: {{ name1 | upper }}</h3>
    <h3>原变量: {{ name2 }}, lower后的变量值: {{ name2 | lower }}</h3>
    <h3>原变量: {{ num1 }}, add:'10'后的变量值: {{ num1 | add:'10' }}</h3>
    <!--<h3>原变量: {{ str_script }}, safe后的变量值: {{ str_script | safe }}</h3>-->
    <h3>原变量: {{ str_script }}</h3>
    <h3>str_script safe后的变量值: {{ str_script | safe }}</h3>
    
    </body>
    </html>
    

    模板的继承

    • 模板继承可以使父模板的内容重用,子模板直接继承父模板的全部内容并可以覆盖父模板中相应的块

    • 语法:

      • 定义父模板中的块block标签
      • 标识出哪些在子模板中是允许被修改的
      • block标签: 在父模板中定义,可以在子模板中覆盖
    • 语法 - 子模板中:

      • 继承模板 extends 标签(写在模板文件的第一行)

        • 例如: {% extends 'base.html' %}
      • 子模板重写父模板中的内容块

        • {% block block_name %}
        • 子模板中用来覆盖父模板中的 bolck_name 块中的内容
        • {% endblock block_name %}
    # app 中的 urls.py
    from django.urls import path, re_path
    from . import views
    
    urlpatterns = [
        path('base_index', views.base_view),
        path('music_index', views.music_view),
        path('sport_index', views.sport_view),
    ]
    
    
    # app 中的 views.py
    from django.template import loader
    from django.http import HttpResponse, HttpResponseRedirect
    from django.shortcuts import render
    
    def base_view(request):
        return render(request, 'base.html')
    
    def music_view(request):
        return render(request, 'music.html')
    
    def sport_view(request):
        return render(request, 'sport.html')
    
    
    # app中的 templates/base.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        {% block mytitle %}
        <title>首页</title>
        {% endblock mytitle %}
    </head>
    <body>
    
    {% block info %}
    <h3>这是首页中的内容</h3>
    {% endblock %}
    
    <a href="/base_index">首页</a>
    <a href="/music_index">音乐频道</a>
    <a href="/sport_index">体育频道</a>
    <br>
    <h4>有问题请联系: xxxxxxxxxx</h4>
    </body>
    </html>
    
    
    # app中的 templates/music.html
    {% extends 'base.html' %}
    
    {% block mytitle %}
    <title>音乐频道</title>
    {% endblock %}
    
    {% block info %}
    <h3>这是音乐频道的内容</h3>
    {% endblock %}
    
    
    # app中的 templates/sport.html
    {% extends 'base.html' %}
    
    {% block mytitle %}
    <title>体育频道</title>
    {% endblock %}
    
    {% block info %}
    <h3>这是体育频道的内容</h3>
    {% endblock %}
    
  • 相关阅读:
    会议安排最优算法
    Python Singleton
    Android HandlerThread 源代码分析
    [Android]_[0基础]_[adb 有用命令]
    使用sshfs将远程目录挂载到本地
    Netty 中ChannelOption的含义以及使用的场景
    netty4.0 Server和Client的通信
    Netty重要概念介绍
    Zookeeper单机伪集群
    整数集合
  • 原文地址:https://www.cnblogs.com/gxfaxe/p/15017465.html
Copyright © 2020-2023  润新知