模板层

过滤器

语法结构

{{ 数据对象|过滤器名称:参数 }}

过滤器最多只能额外传输一个参数

常见过滤器

模板层

模板层

模板层

标签

注意事项

在django模板语法中写标签的时候,只需要写关键字然后tab键就会自动补全

语法结构

{% 名字 …%}

{% end名字 %}

if判断

{% if 条件1 %}

你好啊

{% elif 条件2 %}

他好呀

{% else %}

大家好

{% endif %}

for循环

提供了 forloop关键字

{% for i in l1 %}

{{ i }}

{% endfor %}

for+if其他使用

{% for i in l1 %}
{% if forloop.first %}

这是第一次循环

{% elif forloop.last %}

这是最后一次循环

{% else %}

中间循环

{% endif %}
{% empty %}

for循环对象为空 自动执行

{% endfor %}

自定义操作

前提操作

  1. 在应用下需要创建一个名为templatetags的文件夹
  2. 在该文件夹内创建一个任意名称的py文件
  3. 在该py文件内需要先提前编写两行固定的代码
from django import template
register = template.Library()

自定义过滤器

只能接收两个参数

模板层
@register.filter(is_safe=True)
def index(a, b):
    return a + b
{% load mytag %}
{{ n1|index:666 }}

View Code

自定义简单标签

可以接收任意的参数

@register.simple_tag(name='my_tag')
def func1(a, b, c, d):
    return a + b + c + d
{% my_tag 1 2 3 4 %}  # 参数之间空格隔开即可

自定义inclusion_tag

@register.inclusion_tag('left.html')
def func2(n):
    l1 = []
    for i in range(1, n + 1):
        l1.append(f'第{i}页')
    return locals()
{% func2 10 %} # 传入的参数是几就会打印几页
<ul>
    {% for foo in l1 %}
        <li>{{ foo }}li>
    {% endfor %}
ul>

该方法需要先作用于一个局部html页面,之后将渲染的结果放到调用的位置

模板导入

概念

类似于将html页面上的局部页面做成模块的形式,哪个地方想要直接导入即可展示

有一个非常好看的获取用户数据的页面,需要在网站的多个页面上使用

  • 策略1:拷贝多份即可
  • 策略2:模板的导入

使用方式

{% include ‘menu.html’ %}

menu.html只能是一个 局部页面,只能写 局部代码

注释语法

HTML的注释语法

django模板语法的注释

{# #}

注意事项

HTML的注释可以在前端浏览器页面上直接查看到,模板语法的注释 只能在后端查看,前端浏览器查看不了

模板继承

概念

类似于面向对象的继承:继承了某个页面就可以使用该页面上所有的资源

有很多网站的很多页面,其实都是差不多的,只是局部有所变化,模板的继承可以很好的实现该需求

继承步骤

  1. 先在模板中通过block划定将来可以被修改的区域
    {% block content %}
     <h1>主页内容h1>
    {% endblock %}
  2. 子板继承模板
{% extends 'home.html' %}
  1. 修改划定的区域
    {% block content %}
    <h1>登录内容h1>
    {% endblock %}
  2. 子页面还可以重复使用父页面的内容
{{ block.super }}

注意事项

模板上最少应该有三个区域:css区域、内容区域、js区域,子页面就可以有自己独立的css、js、内容

模板层

Original: https://www.cnblogs.com/zzs0626/p/16279000.html
Author: 顺溜_7
Title: 模板层

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582442/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 初学ajax

    ajax出现无疑改变了web应用:从开始的整体页面的刷新到局部页面的数据显示,不用刷新页面就可以与服务器交互; 1 function ajaxPost(data){ 2 3 var…

    Linux 2023年6月14日
    089
  • Paxos 协议简单介绍

    一、简介 Paxos 协议是少数在工程实践中证实的强一致性、高可用的去中心化分布式协议。Google 的很多大型分布式系统都采用了 Paxos 算法来解决分布式一致性问题,如 Ch…

    Linux 2023年6月16日
    0144
  • zookeeper与kafka集群部署实现

    安装java依赖环境 配置zookeeper 启动zookeeper 检查状态 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目…

    Linux 2023年6月7日
    0196
  • AWS修改RDS时区

    查看 RDS 当前时区 默认情况下,AWS 的 RDS 采用的是 UTC 时间。而我们地区一般位于东八区,因此我们本地的时间是 UTC+8。 连接到 RDS 上,查询当前实例的时区…

    Linux 2023年6月7日
    0103
  • 优化gcc

    优化gcc 目的是改善程序的执行性能,通过编译选项(On)来控制优化代码生成,(n)是一个代表优化级别的整数, 典型的有(0, 1, 2, 3) 其中(-O)等价于(-O_1), …

    Linux 2023年6月7日
    0117
  • 【Example】C++ 标准库多线程同步及数据共享 (std::future 与 std::promise)

    否则你会像听天书一样懵。(…) ==================================== 在任何语言的多线程编程当中,必然涉及线程的同步及数据的共享,方…

    Linux 2023年6月13日
    0123
  • 存储更弹性,详解 Fluid “ECI 环境数据访问” 新功能

    近期,Fluid 支持了阿里云 ECI 应用,并将 JuiceFS Runtime Controller 设置为默认安装;JuiceFS 也就此功能与 Fluid 完成了集成和测试…

    Linux 2023年6月14日
    097
  • /dev/null文件的作用以及使用方法

    关于/dev/null,以及如何使用它 今天在看MIT的一个课程时,老师给的程序实例中有一个地方没弄明白: #!/bin/bash echo "Starting prog…

    Linux 2023年6月6日
    0111
  • .Net MVC实现全局异常捕捉返回通用异常页面的一种方式

    阅文时长 | 0.54分钟字数统计 | 876字符主要内容 | 1、引言&背景 2、部分通用设计代码 3、声明与参考资料『.Net MVC实现全局异常捕捉返回通用异常页面的…

    Linux 2023年6月13日
    0107
  • PHP 通过两个日期计算年龄

    参数:$birth_year:出生年份;$birth_month:出生月份;$birth_day:出生日 function getAgeByBirth($birth_year,$b…

    Linux 2023年6月7日
    0111
  • Kubernetes 容器平台实战

    一、什么是Kubernetes? Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署,自动扩缩容,维护等功能. 通过Kubernetes可以做到…

    Linux 2023年6月14日
    0107
  • 【原创】Linux虚拟化KVM-Qemu分析(九)之virtio设备

    背景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. –…

    Linux 2023年6月8日
    076
  • scp 远程安全复制文件

    scp是 secure copy 的缩写,相当于 cp命令 + SSH。它的底层是 SSH 协议,默认端口是22,相当于先使用 ssh命令登录远程主机,然后再执行拷贝操作。 scp…

    Linux 2023年6月7日
    0103
  • 理清计算机中的数据表示方法–2’s complement

    Bits bits是信息的基本单元,计算机通过电压的高低来确定是0还是1;这里的电压是有一定范围的,0~a视为0, a~b视为1,具体数字不用记 Data Types 同一个数字有…

    Linux 2023年6月6日
    099
  • js笔记之while循环

    while循环就是for循环去掉前后两个条件 var i = 0; for( ; i < 10; ){ document.write(i); document.write(&…

    Linux 2023年6月13日
    0107
  • Redis下载及安装(windows版)

    下载地址1、Github下载地址:https://github.com/MicrosoftArchive/redis/releases2、百度网盘下载地址 https://pan….

    Linux 2023年5月28日
    089
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球