Django基础4——模板系统

news2024/9/26 19:16:04

文章目录

  • 一、基本了解
    • 1.1 引用变量
    • 1.2 全局变量
  • 二、if判断
    • 2.1 语法
    • 2.2 案例
  • 三、for循环
    • 3.1 语法
    • 3.2 案例
    • 3.3 forloop变量
    • 3.4 容错语句
  • 四、过滤器
    • 4.1 内置过滤器
    • 4.2 自定义过滤器
  • 五、模板继承
  • 六、模板导入
  • 七、引用静态文件

一、基本了解

概念:

  • Django模板系统,用于自动渲染一个文本文件,一般用于HTML页面。模板引擎渲染的最终HTML内容返回给客户端浏览器。
  • 模板文件有两部分组成:
    • 静态部分,例如html、css、js
    • 动态部分,django模板语言,类似于jinja语法

1.1 引用变量

Django中的变量:

  • 在函数视图render中的context传入,类似于字典对象。
  • 变量在模板中引用格式:{{ key }}

1.测试代码。

#######################################################
1、编写url路由规则,devops/urls.py文件。
from django.urls import re_path
from devops import views
urlpatterns = [
    re_path('^hello/$',views.hello)
]
#######################################################
2、编写视图函数,devops/views.py文件。
from django.shortcuts import render
def hello(request):
    user = {'name': '卿君', 'property': {'sex': '男', 'age': 25}}
    return render(request, 'user.html', {'user': user})       ##这里将字典中的key传给html模板进行渲染。
#######################################################
3、编写html模板,templates/user.html文件。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
</head>
<body>
传递过来的字典: {{ user }}<br>    ##引用视图render中的key
姓名: {{ user.name }}<br>        ##单独取出字典中的key
性别: {{ user.property.sex }}<br>        ##递归取值。
年龄: {{ user.property.age }}<br>
</body>
</html>

2.访问网页,验证效果。
在这里插入图片描述

1.2 全局变量

  • 适用于每个页面都显示出来的前端页面。
  • 比如博客中不管点到哪个页面去,右上角都会显示用户头像。这时的用户头像这个接口视图函数就可以引用全局变量,不然就需要在每个视图中添加头像的这块代码。

1.没使用全局变量效果。要在需要能显示头像的视图里添加render对html进行渲染再返回给浏览器。
在这里插入图片描述
2.使用全局变量效果。

###############################################
1、项目根目录devops下创建contexts.py文件,编写全局变量。
def user(request):
    user = 'qingjun'
    return {'user':user}
###############################################
2、django配置文件setting.py中添加此处理器。

###############################################
3、在html模板中引用全局变量,此时不需要再在视图中添加代码了,可以直接引用了。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
</head>
<body>
用户登录:{{ login_user }}<br>
传递过来的字典: {{ user }}<br>
姓名: {{ user.name }}<br>
性别: {{ user.property.sex }}<br>
年龄: {{ user.property.age }}<br>
{{ user }}            ##引用全局变量。
</body>
</html>

在这里插入图片描述
在这里插入图片描述

二、if判断

类型操作符
比较操作符== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
逻辑操作符and 与
or 或
成员操作符not 逻辑否定
in 包含在内

2.1 语法

1.通用语法,配合操作符使用。

{% if <表达式> %}
    <内容块>
{% elif <表达式> %}
    <内容块>
{% else %}
    <内容块>
{% endif %}

2.特有语法,省略操作符使用。

########################################################
##相等执行内容块
{% ifequal <值1> <值2> %}    # 等同于{% if <值1> == <值2> %} 
    <内容块>
{% endifequal %}

########################################################
##不相等执行内容块
{% ifnotequal <值1> <值2> %}
    <内容块>
{% endifnotequal %}

2.2 案例

  • 在html模板中添加if判断逻辑,其他文件内容与之前一样,这里直接复制过来了。

1.通用语法编写。

#######################################################
1、编写url路由规则,devops/urls.py文件。
from django.urls import re_path
from devops import views
urlpatterns = [
    re_path('^hello/$',views.hello)
]
#######################################################
2、编写视图函数,devops/views.py文件。
from django.shortcuts import render
def hello(request):
    user = {'name': '卿君', 'property': {'sex': '男', 'age': 25}}
    return render(request, 'user.html', {'user': user})       ##这里将字典中的key传给html模板进行渲染。
#######################################################
3、编写html模板,templates/user.html文件。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
</head>
<body>
传递过来的字典: {{ user }}<br>    ##引用视图render中的key
{% if user.property.age == 25 %}
    匹配正确
{% else %}
    匹配错误
{% endif %}
</body>
</html>

在这里插入图片描述
2.省略操作符编写。

##其他文件内容操持不变,只需修改templates/user.html文件模板代码。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
</head>
<body>
传递过来的字典: {{ user }}<br>    ##引用视图render中的key
{% ifequal user.property.age 22 %}
    匹配正确
{% else %}
    匹配错误
{% endifequal %}
</body>
</html>

在这里插入图片描述

三、for循环

  • 一般用于遍历数据类型的元素进行处理,例如列表。

3.1 语法

{% for <变量> in <序列> %}
    <内容块> 
{% endfor %}

3.2 案例

1.示例代码。

#######################################################
1、编写url路由规则,devops/urls.py文件。
from django.urls import re_path
from devops import views

urlpatterns = [
    re_path('^hello/$',views.hello)
]

#######################################################
2、编写视图函数,devops/views.py文件。
def hello(request):
    user = { 'qingjun': {'name': '卿君', 'sex': '男', 'age': 33, 'lable':['教育','老师']},
             'zhaoyong': {'name': '赵勇', 'sex': '男', 'age': 25, 'lable':['教育','助教']},
             'wangqing': {'name': '忘情', 'sex': '女', 'age': 28, 'lable':['教育','班主任']},
            }
    return render(request, 'user.html', {'user': user})

#######################################################
3、编写html模板,templates/user.html文件。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
</head>
<body>


##遍历循环取出字典中的key
{% for k in user %}
    <li>{{ k }}</li>    ##列表形式展示内容。
{% endfor %}


##生成一个表单
<table border="1">      ##此为标题头。     
    <thead>
        <tr>
            <th>用户名</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>标签</th>
        </tr>
    </thead>
    <tbody>           ##此为表但内容,遍历循环取出字典中的key-value进行填充。
        {% for k,v in user.items %}
        <tr>
            <td>{{ k }}</td>
            <td>{{ v.name }}</td>
            <td>{{ v.sex }}</td>
            <td>{{ v.age }}</td>
            <td>
                {% for i in v.lable %}
                    <li>{{ i }}</li>
                {% endfor %}
            </td>
        </tr>
        {% endfor %}
    </tbody>

</body>
</html>

2.验证效果。
在这里插入图片描述

3.3 forloop变量

  • forloop是在{% for %}标签中生成的变量,用于获取当前循环进展信息。
变量描述
forloop.counter循环计数器,当前循环的索引从1开始
forloop.counter0循环计数器,当前循环的索引从0开始
forloop.revcounter当前循环倒数计数,最后一次循环为1,反向计数
forloop.revcounter0当前循环倒数计数,最后一次循环为0,反向计数
forloop.first当前循环为第一个循环时,该变量为True
forloop.last当前循环为最后一个循环时,该变量为True
forloop.parentloop再嵌套循环中,指向当前循环的上级循环

1.前端显示循环索引,从1开始计数。

##紧接3.2示例,只需修改templates/user.html模板内容,修改内容如下。

{% for k in user %}
    {{ forloop.counter }}    ##添加此行
    <li>{{ k }}</li>
{% endfor %}

在这里插入图片描述
2.前端显示循环索引,从0开始计数。

##紧接3.2示例,只需修改templates/user.html模板内容,修改内容如下。

{% for k in user %}
    {{ forloop.counter0 }}    ##添加此行
    <li>{{ k }}</li>
{% endfor %}

在这里插入图片描述

3.4 容错语句

  • for…empty 当循环的序列为空时,执行empty下面的内容。

语法:

{% for <变量> in <序列> %}
    <遍历>
{% empty %}
    <代码块>
{% endfor %}

1.正常循环时,不会执行empty语句。

##紧接3.2示例,只需修改templates/user.html模板内容,修改内容如下。
{% for k in user %}
    <li>{{ k }}</li>
{% empty %}
    循环错误,请检查
{% endfor %}

在这里插入图片描述

2.循环错误时,执行empty语句。

##紧接3.2示例,只需修改templates/user.html模板内容,修改内容如下。
{% for k in user1 %}    ##视图中没有user1,会遍历错误。
    <li>{{ k }}</li>
{% empty %}
    循环错误,请检查
{% endfor %}

在这里插入图片描述

四、过滤器

4.1 内置过滤器

  • 过滤器:在变量被显示前修改值的一种方法。常用于服务端返回给浏览器数据之前,修改数据。
  • 语法:{{ value | 过滤器:参数 }}
过滤器说明示例
add将两个值转换为整数相加{{ 11 | add:“6” }} 结果 17
cut切除字符。从给定字符串中删除arg的所有值。{{ “hello world” | cut:“w” }} 结果 hello orld
default如果值的计算结果为 False,则使用给定的默认值。
否则,使用该值。
{{ “” | default:“hello world” }} 结果 hello world
first返回第一个元素{{ “hello world” | first }} 结果 h
last返回最后一个元素{{ “hello world” | last }} 结果 d
join使用字符串连接列表,如Python的 str.join(list){{ abc | join:“,” }} 结果 1,2,3 # abc = [1,2,3]
length返回值的长度。这适用于字符串和列表{{ “hello world” | length }} 结果 11
lower将字 符串转换为小写{{ “AAA” | lower }} 结果 aaa
upper将字符串转换为大写{{ “aaa” | upper }} 结果 AAA
slice切片, 类似于Python中的切片操作。{{ “hello world” | slice:“2:” }} 结果 llo world
title所有单词首字母大写{{ “aaa” | title }} 结果 Aaa
truncatechars如果长度大于指定的字符数,则截断字符串。
截断的字符串将以可翻译的省略号序列(“…”)结束
{{ “hello world” |truncatechars:2 }} 结果 h…
filesizeformat将该值格式化为“人类可读”文件大小(即 ‘13 KB‘,‘4.1 MB‘,‘102 bytes‘ 等)。{{ 10000 | filesizeformat }} 结果 9.8 KB
floatformat当不带参数时,将一个浮点数舍入到小数点后一位,但前提是要显示一个小数部分。{{ 1.33333333 | floatformat }} 结果 1.3 ,
floatformat:2 指定保留的小数位数

1.测试代码

#######################################################
1、编写url路由规则,devops/urls.py文件。
from django.urls import re_path
from devops import views

urlpatterns = [
    re_path('^hello/$',views.hello)
]

#######################################################
2、编写视图函数,devops/views.py文件。
def hello(request):
    login_user = "zhangsan"
    return render(request, 'user.html', {'login_user': login_user})

#######################################################
3、编写html模板,templates/user.html文件。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
</head>
<body>

用户登录:{{ login_user }}<br>
返回第一个元素:{{ login_user | first }}<br>
返回字符串长度:{{ login_user | length }}<br>
转为大写:{{ login_user | upper }}<br>

</body>
</html>

2.验证效果。
在这里插入图片描述

4.2 自定义过滤器

1.在app下创建templatetags目录,该目录下创建__init__.py和filters.py文件,并且该app必须在INSTALLED_APPS中进行安装。
在这里插入图片描述
2.在filters.py文件自定义过滤器函数。

from django.template import Library
register = Library() # 注册过滤器对象

@register.filter #通过装饰注册自定义过滤器
def func(n):
    return n / 2

3.在模板中使用自定义过滤器。

#######################################################
1、编写根url路由规则,devops/urls.py文件。
from django.urls import path,include

urlpatterns = [
    path('apm/', include('apm.urls')),
]
#######################################################
2、编写子url路由规则,devops/apm/urls.py文件。
from django.urls import path
from apm import views

urlpatterns = [
    path('qingjun/', views.wuhan),
]
#######################################################
3.编写子视图函数,devops/apm/views.py文件。
from django.shortcuts import render
def wuhan(request):
    login_user = "zhangsan"
    return render(request,'user.html',{'login_user':login_user})

#######################################################
4、编写html模板,并在模板中引用自定义过滤器。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试页面</title>
</head>
<body>

{% load filters %}   ##添加这两行,表示引用自定义过滤器。
{{ 123 | func }}     ##传入参数123,并调用函数func,,最后返回给前端。

</body>
</html>

在这里插入图片描述

五、模板继承

  • 模板继承主要是为了提高代码重用,减轻开发人员的工作量。
  • 典型应用:网站的头部、尾部信息。

1.定义母板,这个页面存放整个网站共用的内容。

##添加母版文件templates/base.html。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>母板</title>
    <style>
        .nav {
            background-color: chartreuse;
            color: black;
        }
        .context {
            background-color: orangered;
            color: black;
        }
        .footer {
            background-color: rebeccapurple;
            color: black;
        }
    </style>
</head>
<body>

<div class="nav">
    <h1>头部区域</h1>
</div>

<div class="context">
    <h1>内容区域</h1>
</div>

<div class="footer">
    <h1>底部区域</h1>
</div>

</body>
</html>

2.在母板里添加,预留子模板差异化内容,语法为{% block 名称 %} 预留区域 {% endblock %}

##修改母版文件templates/base.html”内容区域“代码。
<div class="context">
    {% block context %}{% endblock %}    ##添加此行。
{#    <h1>内容区域</h1>#}
</div>

3.子模板继承这个母版,语法为{% extends ‘base.html’ %}。在子模板里同样语法引用并填充预留区域内容。

############################################################
##在平台首页html模板添加母板。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网站首页</title>
</head>
<body>
{% extends 'base.html' %}    ##添加此行,引用母板base.html

{% block context %}
    <h1>博客首页</h1>       ##正常写中间区域要展示的代码。
{% endblock %}
</body>
</html>


############################################################
##在登录页面html模板添加母板。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>平台登陆</title>
</head>
<body>
{% extends 'base.html' %}
{% block context %}
    <h1>欢迎访问DevOps系统</h1>
    <form action="{% url 'login' %}" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="text" name="password"><br>
        <button type="submit">登录</button>
        <span style="color:red;">{{ msg }}</span>
    </form>
{% endblock %}
</body>
</html>

4.验证效果。
在这里插入图片描述
在这里插入图片描述

六、模板导入

  • 导入一个模板(一般是某个网页功能)到当前模板。

1.将一个功能创建为模板,templates/text.html为功能模板。

<style>
    .hello {
        background-color: red;
    }
</style>

<div class="hello">
    子模板
</div>

2.将功能模板导入到子模版中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网站首页</title>
</head>
<body>
{% extends 'base.html' %}
{% block context %}
    <h1>博客首页</h1>
    {% include "text.html" %}     ##添加此行导入。
{% endblock %}
</body>
</html>

3.验证效果。
在这里插入图片描述

七、引用静态文件

  • 一般需要引用静态文件展示在前端,比如引用图片。

1.项目同级目录下创建static目录,下面存放静态文件。并在django配置文件中指定静态文件的绝对路径。

##settings.py文件末尾添加以下内容。
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
STATIC_URL = '/static/'    ##django默认静态文件存放目录。

在这里插入图片描述
2.在模板文件引用静态文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网站首页</title>
</head>
<body>
{% extends 'base.html' %}
{% block context %}
    <h1>博客首页</h1>
    <img src="/static/jpg/2.jpg" alt="">    ##添加此行,指定静态文件相对路径。
    {#    <img rel="stylesheet" src="/static/jpg/2.jpg">#}    ##第二种写法。
	{#    {% load static %}#}     ##第三种写法,读取静态文件目录,再拼接文件路径。
	{#    <img rel="stylesheet" src="{% static 'jpg/3.jpg' %}">#}
{% endblock %}

</body>
</html>

3.访问网页,验证效果,图片已被引用出来。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/929665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI 时代,程序员无需焦虑 | 《服务端开发:技术、方法与实用解决方案》(文末送书福利4.0)

文章目录 &#x1f4cb;前言&#x1f3af;程序员会被 AI 取代么&#xff1f;&#x1f3af;服务端开发尚难被 AI 取代&#x1f3af; 服务端开发何去何从&#xff1f;&#x1f3af;业界首部体系化、全景式解读服务端开发的著作&#x1f4ac;读者对象&#x1f4da;本书优势&#x…

Shell 编程快速入门 之 函数基础知识

目录 shell函数基础知识 函数定义 函数名 函数体 参数 返回值 return返回值的含义 return与echo返回值的区别 可变参数函数 自定义库函数 定义库函数 调用库函数 执行结果 递归函数 阶乘函数 斐波那契函数 shell函数基础知识 函数定义 函数名 Shell函数用…

深度学习优化入门:Momentum、RMSProp 和 Adam

目录 深度学习优化入门&#xff1a;Momentum、RMSProp 和 Adam 病态曲率 1牛顿法 2 Momentum:动量 3Adam 深度学习优化入门&#xff1a;Momentum、RMSProp 和 Adam 本文&#xff0c;我们讨论一个困扰神经网络训练的问题&#xff0c;病态曲率。 虽然局部极小值和鞍点会阻碍…

LLM-chatgpt训练过程

流程简介 主要包含模型预训练和指令微调两个阶段 模型预训练&#xff1a;搜集海量的文本数据&#xff0c;无监督的训练自回归decoder&#xff1b; O T P ( O t < T ) O_TP(O_{t<T}) OT​P(Ot<T​)&#xff0c;损失函数CE loss指令微调&#xff1a;在输入文本中加入…

注解和class对象和mysql

注解 override 通常是用在方法上的注解表示该方法是有重写的 interface 表示一个注解类 比如 public interface override{} 这就表示是override是一个注解类 target 修饰注解的注解表示元注解 deprecated 修饰某个元素表示该元素已经过时了 1.不代表该元素不能用了&…

开源项目的社区建设与管理

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Spring boot如何工作

越来越方便了 java技术生态发展近25年&#xff0c;框架也越来越方便使用了&#xff0c;简直so easy&#xff01;&#xff01;&#xff01;我就以Spring衍生出的Spring boot做演示&#xff0c;Spring boot会让你开发应用更快速。 快速启动spring boot 请参照官网 Spring | Quic…

开源与云计算:新的合作模式

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

用QT实现MVP模式

近些天用qt 作项目,遇到参数界面.偷闲写个mvp模式示例. mvp模式重要的有两点 1 低耦合: 界面与后端数据类,不直接引用,可方便替换. 2 形成界面驱动-界面更新的闭环.:通过函数指针类技术,让数据自动回流. MVP (Model-View-Presenter) 视图&#xff08;View&#xff09;: 接…

本地私有仓库、harbor私有仓库部署与管理

本地私有仓库、harbor私有仓库部署与管理 一、本地私有仓库1.本地私有仓库简介2.搭建本地私有仓库3.容器重启策略介绍 二、harbor私有仓库部署与管理1.什么是harbor2.Harbor的特性3.Harbor的构成4.harbor部署及配置5.客户端测试 三、Harbor维护1.创建2.普通用户操作私有仓库3.日…

python进行数据分析:数据预处理

六大数据类型 见python基本功 import numpy as np import pandas as pd数据预处理 缺失值处理 float_data pd.Series([1.2, -3.5, np.nan, 0]) float_data0 1.2 1 -3.5 2 NaN 3 0.0 dtype: float64查看缺失值 float_data.isna()0 False 1 …

mysql57、mysql80 目录结构 之 Windows

查看mysql 数据存储的位置 /bin&#xff1a;存储可执行文件&#xff0c;主要包含客户端和服务端启动程序&#xff0c;如mysql.exe、mysqld.exe等 /docs&#xff1a;存放一些文档 /include&#xff1a;用于放置一些头文件&#xff0c;如&#xff1a;mysql.h、mysqld_error.h 等 …

Android SDK 上手指南||第七章 Java应用程序编程

第七章 Java应用程序编程 如果大家已经对Java非常熟悉&#xff0c;那么不妨直接忽略这部分内容。如果大家的技巧还存在局限或者对Java这种语言只闻其名&#xff0c;那么本文将为各位解答很多在Android开发当中经常遇到的问题。需要注意的是&#xff0c;这篇文章并不能作为Java…

容器技术,1. Docker,2. Kubernetes(K8s):

目录 容器技术 1. Docker&#xff1a; 2. Kubernetes&#xff08;K8s&#xff09;&#xff1a; Docker和Kubernetes 容器的主要应用场景有哪些&#xff1f; 容器技术 有效的将单个操作系统的资源划分到孤立的组中&#xff0c;以便更好的在孤立的组之间平衡有冲突的资源使…

【云原生】Docker的数据管理(数据卷、容器互联)

目录 一、数据卷&#xff08;容器与宿主机之间数据共享&#xff09; 二、数据卷容器&#xff08;容器与容器之间数据共享&#xff09; 三、 容器互联&#xff08;使用centos镜像&#xff09; 总结 用户在使用Docker的过程中&#xff0c;往往需要能查看容器内应用产生的数据…

Spring(aop介绍,底层实现,jdk代理,cglib代理)

02-aop简介-aop的作用及其优势_哔哩哔哩_bilibili 122 1、Spring的aop介绍 1.1aop是一种技术&#xff0c;aop是在运行之间执行的&#xff0c;他可以完成程序功能之间的松耦合&#xff0c;动态代理的作用也等同于Aop的作用&#xff1a;他提供了相应的封装&#xff0c;Aop是面向…

UG\NX二次开发 使用BlockUI设计对话框时,如何设置默认的开发语言?

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,C\C++,Qt-CSDN博客 简介: NX二次开发使用BlockUI设计对话框时,如何设置默认的代码语言? 效果: 方法: 依次打开“文件”->“实用工具”->“用户默认设置”->“用户界面”->“操作记录”->“…

如何进行微服务的集成测试

集成测试的概念 说到集成测试&#xff0c;相信每个测试工程师并不陌生&#xff0c;它不是一个崭新的概念&#xff0c;通过维基百科定义可以知道它在传统软件测试中的含义。 Integration testing (sometimes called integration and testing, abbreviated I&T) is the pha…

【C++精华铺】9.STL string

目录 1. string类的优势 2. string类的常用接口 2.1 常用构造 1. 空串构造&#xff1a;string(); 2. C串构造&#xff1a;string(const char* s); 3. 拷贝构造&#xff1a;string(const string& str); 4. 字符填充构造&#xff1a;string(size_t n, char c); 5. 迭代…

GDFN模块(restormer)

为了对特征进行变换&#xff0c;常规的前馈神经网络独立地在每个像素位置进行相同的操作。它使用两个1x1卷积层&#xff0c;一个用来扩展特征通道&#xff08;通常4倍&#xff09;&#xff0c;第二个用来将特征通道减少到原来的输入维度。在隐藏层中加入非线性。 GDFN做了两个…