Django之模版层

news2024/11/28 1:04:38

文章目录

  • 模版语法传值
  • 模版语法传值特性
  • 模版语法标签
    • 语法格式
    • if模板标签
    • for模板标签
    • with起别名
  • 模版语法过滤器
    • 常用过滤器
  • 自定义过滤器、标签、inclusion_tag
    • 自定义过滤器
    • 自定义标签
    • 自定义inclusion_tag
  • 模版导入
  • 模版继承

模版语法传值

	模板层三种语法
	{{}}:主要与数据值相关
	{%%}:主要与逻辑相关
	{##}:模板注释

django的模板语法是自己写的 跟jinja2不一样
'''
1.针对需要加括号调用的名字 django模板语法会自动加括号调用你只需要写名字就行
2.模板语法的注释前端浏览器是无法查看的 {##},
模板语法{##}是由后端处理的,当识别为模板注释时就会从html文件中移除了,不会返回给用户;
而html注释<!---->是由前端浏览器对html处理时渲染时不做处理,但检查网页源码时还是能看见这些注释的。
'''

通过之前的Django知识的了解,如果我们需要向页面传递参数,可以通过render函数帮助我们实现:

第一种方式:手动将所有内容放入字典内进行传递

	def index(request):
	    name = 'jack'
	    dic = {'hobby':['jump','music','rap']}
	    return render(request,'index.html', {'name': name, 'dic': dic})

第一种方式传值:精准传值 不浪费资源 针对多资源的传递书写麻烦

第二种方式:将当前名称空间中所有的变量名与值全部传递

	def index(request):
	    name = 'jack'
	    dic = {'hobby': ['jump', 'music', 'rap']}
	    return render(request,'index.html',locals())

第二种方式传值:将函数名称空间中所有的名字全部传递 名字过多并且不使用的情况下比较浪费资源

模版语法传值特性

在这里插入图片描述

		1.关于模版语法传值的范围是很大的 我们的八大数据类型都可以传值还有函数以及类
		2.文件对象也可以展示并调用方法
		3.函数名的传递会自动加括号执行并将返回值展示到页面上 需要写上return返回值才可以返回到页面
			注意函数如果有参数则不会执行也不会展示 模板语法不支持有参函数
			
		4.类名的传递也会自动加括号产生对象内存地址并展示到页面上
			如果想使用的话可以通过对象句点符的方式点出来

		5.对象不会加括号,但可以获取对象的一些数据属性
		6.索引、键、属性只能通过句点的方式取
		
		ps:总结针对可以加括号调用的名字模板语法都会自动加括号调用
		ps:模板语法会判断每一个名字是否可调用 如果可以则调用!!!

模版语法标签

在模板内通过:{% %} 来定义;例如:{%for %} {% endfor %}。在前面Django学习的章节内我们就使用了:

	{% load static %} # 加载静态接口
	{% static '静态文件路径' % # 使用静态接口作为前缀寻找静态文件
	{% url '路由别名' %} # 根据路由别名执行该路由规则
	{% for obj in data %} # 给定一个迭代器,根据其内容决定遍历次数
		代码块
	{% endfor %}

语法格式

	if elif else
		{% if 条件 %}  条件一般是模板语法传过来的数据  直接写名字使用即可
	        条件成立执行的代码
	    {% elif 条件1 %}
	 		  条件1成立执行的代码	
	    {% else %}
	       	 条件都不成立执行的代码
	    {% endif %}
		    
	for循环(html页面输入for Tab后面会自动补全)需要用到一个关键字 forloop 用来记录循环第几次的
		{% for i in str %}
		    {% if forloop.first %}
		        <p>这是我循环第一次!!</p>
		    {% elif forloop.last %}
		        <p>这是我最后一次循环!!</p>
		    {% else %}
		        <p>{{ i }}</p>
		    {% endif %}
		    {% empty %}
		        <p>我是判断当前标签是否有值的哦! 如果是空我就运行啦!!</p>
		{% endfor %}

if模板标签

if这种模板标签非常类似于Python内的if,只不过部分模板标签都会有一个end标签名为作用域的结束,而Python则是以缩进为作用域。

<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>index</title>
      </head>
      <body>
        <url>
            {% if 1 > 2 %}
                条件1>2判断成功执行
            {% elif 3 > 1 %}
                条件3>1判断成功执行
            {% elif 5 > 2 %}
                条件5>2判断成功执行
            {% else %}
                以上条件都没有触发
            {% endif %}
        </url>
      </body>
</html>

一个作用域内只有一个条件能执行成功,浏览器打开效果:
在这里插入图片描述

for模板标签

for标签的几个常用属性

for内可用描述
forloop.counter当前循环的索引值(从1开始)
forloop.counter0当前循环的索引值(从0开始)
forloop.revcounter当前循环的倒序索引值(从1开始)
forloop.revcounter0当前循环的倒序索引值(从0开始)
forloop.first当前循环是不是第一次循环(布尔值)
forloop.last当前循环是不是最后一次循环(布尔值)
forloop.parentloop本层循环的外层循环

视图传递一个列表,index.html:

<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>index</title>
      </head>
      <body>
        <url>
            {% for li in lis %}
                {% if forloop.first %}
                    <li>我是第一个列表{{ li }}</li>
                {% elif forloop.last %}
                     <li>我是最后一个列表{{ li }}</li>
                 {% else %}
                    <li>{{ li }}</li>
                {% endif %}
            {% endfor %}
        </url>
      </body>
</html>

在这里插入图片描述

直接遍历forloop也是可以的,而它显示的则是上面提到的所有属性内容:

<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>index</title>
      </head>
      <body>
        <url>
            {% for foo in lis %}
                {{ forloop }}
                <br/>
            {% endfor %}

        </url>
      </body>
</html>

在这里插入图片描述

补充:当for接收的值不存在,如何处理
如果给定迭代器为空或找不到,则for标记可以带有一个可选子句,其文本将显示:{% empty %}

<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>index</title>
      </head>
      <body>
        <url>
            {% for foo in llllll %}
                {{ foo }}

                {% empty %}
                    该循环找不到遍历内容
            {% endfor %}

        </url>
      </body>
</html>

在这里插入图片描述


遍历一个字典:

	
	{% for key,val in dic.items %}
	    <p>{{ key }}:{{ val }}</p>
	{% endfor %}
	
	{% for foo in d.keys %}
	    <p>{{ foo }}</p>
	{% endfor %}
	
	{% for foo in d.values %}
	    <p>{{ foo }}</p>
	{% endfor %}
	
	{% for foo in d.items %}
	    <p>{{ foo }}</p>
	{% endfor %}

with起别名

使用一个简单地名字缓存一个复杂的变量,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的

	d = {'username':'kevin','age':18,'info':'这个人有点意思','hobby':[111,222,333,{'info':'NB'}]}

	# with起别名
	{% with d.hobby.3.info as nb  %}
	    <p>{{ nb }}</p>with语法内就可以通过as后面的别名快速的使用到前面非常复杂获取数据的方式
	    <p>{{ d.hobby.3.info }}</p>
	{% endwith %}
	
	
	{% with total=business.employees.count %}
	    {{ total }} employee{{ total|pluralize }}
	{% endwith %}
	不要写成as

模版语法过滤器

该模板语法类似与Python的内置方法,通过|符号对值进行操作。

常用过滤器

语法:{{ value|过滤器名:参数 }}
过滤器用管道符隔开(无空格),最多支持多传入一个参数。
过滤器是支持链式的,可以将多个过滤器串起来,上一个过滤器的输出作为下一个的输入

过滤器功能示例
default如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。{{ value|default:“nothing”}}
length对于字符串列表这类有length属性的,得到其值{{ value|length}}
filesizeformat将传入的数字当做文件的字节数,将其处理成合适展示的文件大小,如2048就会展示为2 KB{{ value|filesizeformat }}
slice对字符串进行切片{{value|slice:“2:-1”}}
add将传入的数字或字符串做相加或拼接处理{{value|add:1}}
safe模板语法默认转义带html语法的文本,safe取消标签文本转义,让其可以被html渲染{{ value|safe}}
truncatechars如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“…”)结尾。{{ value|truncatechars:9}}
truncatewords在一定数量的字后截断字符串,处理同上…。{{ value|truncatewords:9}}
cut移除value中所有的与给出的变量相同的字符串如果value为’i love you’,那么将输出’iloveyou’.{{ value|cut:’ ’ }}
timesincedatetime数据距离现在的时间(从现在起){{ blog_date|timesince }}
timeuntildatetime数据距离现在的时间(到现在止){{ blog_date|timesince }}
datedatetime数据字符化输出{{ value|date:“Y-m-d H:i:s”}}

views.py

	from django.shortcuts import render
	from datetime import datetime
	def index(request):
	    lis = [1,2,3,4,5]
	    num = 10
	    strs = 'Hello'
	    ctime = datetime.now()
	    b1 = True
	    b2 = False
	    file_size = 10502030
	    texts = '这是一段很长且内容丰富的文本'
	
	    return render(request, 'index.html', locals())

index.html

<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>index</title>
      </head>
      <body>
        <p>获取值的长度:{{ lis|length }}</p>
        <p>加法运算:{{ num|add:20 }}</p>
        <p>字符串拼接:{{ strs|add:' World' }}</p>
        <p>日期格式:{{ ctime|date:'Y年-m月-d日 H时:i分:s秒' }}</p>
        <p>当结果为True{{ b1|default:'我触发了' }}</p>
        <p>当结果不为True{{ b2|default:'我触发了' }}</p>
        <p>通过数值计算文件大小:{{ file_size|filesizeformat }}</p>
        <p>截取文本(7位数,包含点):{{ texts|truncatechars:7 }}</p>
        <p>截取文本(3位数,包含点):{{ texts|truncatechars:3 }}</p>
      </body>
</html>

打开浏览器效果:
在这里插入图片描述


如果传入这种内容到前端会是什么样子呢;

	h = "<h1>我是标题</h1>"

在这里插入图片描述
如果需要在后端就写好标签,传入到前端直接显示的话,存在两种方式:

方式一:导入一个新的方法来完成需求

	from django.shortcuts import render
	from django.utils.safestring import mark_safe
	
	def index(request):
	    h = mark_safe("<h1>我是标题</h1>")
	
	    return render(request, 'index.html', locals())

方式二:后端正常传参,前端过滤解析

	<!DOCTYPE html>
	<html lang="en">
	      <head>
	          <meta charset="UTF-8">
	          <title>index</title>
	      </head>
	      <body>
	        {{ h|safe }}
	      </body>
	</html>

在这里插入图片描述

自定义过滤器、标签、inclusion_tag

简介、环境准备

这类似于在Python内自定义函数,在开始前要做3个步骤:

  1. 在应用下创建一个名字必须叫"templatetags"文件夹
  2. 在上序文件夹内创建一个任意名称的py文件
  3. 在该py文件内固定先书写以下两条代码
	from django import template
	register = template.Library()

完成上面步骤之后,记得重启Django项目啊!正式开始我们的实例


自定义过滤器

在定义的py文件内,开始创建我们的过滤器

	@register.filter(name='myfileter') # 自定义过滤器
	def index(x,y): # 接受两个值
	    return x * y # 只做简单的运算

html文件首先要加载我们定义的过滤器,通过存放过滤器的那个py文件名

<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>add</title>
      </head>
      <body>
        {% load mytag %} <!-- 加载自定义的过滤器 -->

        {{ 10|myfileter:2 }} <!--102传进去了,进行10*2,得到20 -->
      </body>
</html>

页面打开效果
在这里插入图片描述

自定义标签

定义方式几乎与过滤器一致,我们这里定义的是简单版的标签

mytag.py

	from django import template
	register = template.Library()
	
	# 自定义简单版标签(for那些标签都是通过register.tag定义出来的)
	@register.simple_tag(name='mysimple')
	def func1(a,b,c,d):
	    return '%s-%s %s:%s'%(a,b,c,d)

index.html

<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>index</title>
      </head>
      <body>
        {% load mytag %}

        {% mysimple 1 'Hello' 2 'World' %}
      </body>
</html>

浏览器打开效果
在这里插入图片描述

自定义inclusion_tag

定义inclusion_tag是为了避免模块会重复代码
mytag.py

	from django import template
	
	register = template.Library()
	
	# 自定义inclusion_tag
	@register.inclusion_tag('test.html', name='my_inclusion_tag')
	def func(n):
	    l = []
	    for i in range(1, n + 1):
	        l.append(f'第{i}页')
	
	    return {'lis':l} # 表示将列表传入到test.html页面内

test.html

<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>test</title>
      </head>
      <body>
        {% for foo in lis %}
            <li>{{ foo }}</li>
        {% endfor %}
      </body>
</html>

别急,还没完呢,这不是我们主页面,我们的目的为了重复使用上面页面的代码(但必须上面界面是经过inclusion_tag传入的)。

index.html

<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>index</title>
      </head>
      <body>
        {% load mytag %}

        <b>第一次使用</b>
        {% my_inclusion_tag 2 %} <!-- 向那个页面传入值2,然后拿到它的页面 -->

        <b>第二次使用</b>
        {% my_inclusion_tag 5 %} <!-- 向那个页面传入值2,然后拿到它的页面 -->

      </body>
</html>

打开浏览器效果:
在这里插入图片描述
每次都可以传值给inclusion_tag,然后由inclusion_tag将值传递给某个页面,再然后那个页面产生的结果会返回到我们调用inclusion_tag的页面

总结:当某个区域需要反复使用inclusion_tag,那么得到数据不是固定的


模版导入

将写好的一个模板导入到另一个模板里面,类似于模块。

如:我们写的一个导航栏模板,写好之后其它任意模板都可以导入使用:

语法:{% include '模板文件' %}

headers.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
                    data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">Brand</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav">
                <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
                <li><a href="#">Link</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                       aria-expanded="false">Dropdown <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Action</a></li>
                        <li><a href="#">Another action</a></li>
                        <li><a href="#">Something else here</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">Separated link</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">One more separated link</a></li>
                    </ul>
                </li>
            </ul>
            <form class="navbar-form navbar-left">
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="Search">
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>
            <ul class="nav navbar-nav navbar-right">
                <li><a href="#">Link</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                       aria-expanded="false">Dropdown <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Action</a></li>
                        <li><a href="#">Another action</a></li>
                        <li><a href="#">Something else here</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">Separated link</a></li>
                    </ul>
                </li>
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>

</body>
</html>

yel.html 主页

{% include 'headers.html' %} <!-- 放在任意位置都可以,笔者习惯性放在这里,更明确一些。 -->
<!DOCTYPE html>
<html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>index</title>
          <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
          <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
          <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
      </head>
      <body>
        Hello World!
      </body>
</html>

打开浏览器看看效果
在这里插入图片描述

模版继承

模板继承类似于模板导入,但不同的是继承分为:母版、子版。

  • 母版:正常页面布局,可以留出某块区域给子版进行使用
  • 子版:可以完全继承与模板,但是这就与导入无异了,所以子版可以在母版预留出来的区域继续编辑自己的内容
		{% extends 'html文件名' %}			# 新建一个页面 第一行写入继承代码
	   	{% block 区域名称 %}					# 可以通过这个方式定位到页面的位置
	    	母版内容							# 这个地方填写新的代码
		{% endblock %}
		
	   	{% block 区域名称 %}			# 在模板划分的区域内编写内容
	    	子板内容
	    {% endblock %}

	 	母版在划定区域的时候一般都有三个区域:CSS区域、HTML文档区域、JS区域。
	 	目的就是为了让子版具有独立的CSS、JS以便于增加拓展性。
	 	
		在模板的head标签内:{% block css %}{% endblock %}
		在模板的body标签结尾:{% block javascript %}{% endblock %}
		
	    {% block css %}
		{% endblock %}
		
	    {% block content %}
		{% endblock %}
		
	    {% block js %}
		{% endblock %}
		
	   	'''子板中还可以使用母板的内容  {{ block.super }} 	让他使用之前原主页的内容'''	

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

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

相关文章

【LeetCode刷题-滑动窗口】--1456.定长子串中元音的最大数目

1456.定长子串中元音的最大数目 方法&#xff1a;使用滑动窗口 class Solution {public int maxVowels(String s, int k) {int n s.length();int sum 0;for(int i 0;i<k;i){sum isVowel(s.charAt(i));}int ans sum;for(int i k;i<n;i){sum sum isVowel(s.charAt…

【echarts】实现单线与多线滚轮联动、隐藏拖拽、关闭动画

单线滚轮联动 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>ECharts DataZoom</title><script src"https://cdn.jsdelivr.net/npm/echarts5.2.0/dist/echarts.min.js"></script> </hea…

京东数据挖掘(京东数据采集):2023年Q3电脑行业数据分析报告

近年来&#xff0c;在远程办公、远程教育等需求的刺激下&#xff0c;电脑的销售增长较为显著。不过&#xff0c;随着市场的成熟乃至饱和&#xff0c;电脑销售市场也逐渐出现增长困难、需求疲软等问题。 2023年第三季度&#xff0c;电脑市场的出货量同比下滑。根据鲸参谋电商数据…

【ROS导航Navigation】四 | SLAM与导航 | 自主移动的地图构建 (更新ing)

致谢&#xff1a;ROS赵虚左老师 Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 参考赵虚左老师的实战教程 实现比较简单&#xff0c;步骤如下: 编写launch文件&#xff0c;集成SLAM与move_base相关节点&#xff1b;执行launch文件并测试。 <la…

入门后端开发得学什么?这份超详细的后端开发学习路线图值得推荐!

后端开发, 无疑是一个极为关键的领域&#xff0c;涉及到我们每日互联网生活的每个细节。每当你在网上浏览、搜索或进行购物等活动时&#xff0c;背后都有大量的后端技术作为支撑。而随着技术的日益进步&#xff0c;人们对于高效、稳定和安全的网络服务的需求也越来越高。 另一…

[C/C++] 数据结构 链表OJ题:相交链表(寻找两个链表的相交起始结点)

题目描述: 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返…

Unity中Shader矩阵的乘法

文章目录 前言一、矩阵乘以标量二、矩阵和矩阵相乘1、第一个矩阵的列数必须 与 第二个矩阵的行数相等&#xff0c;否则无法相乘&#xff01;2、相乘的结果矩阵&#xff0c;行数由第一个矩阵的行数决定&#xff0c;列数由第二个矩阵的列数决定&#xff01; 三、单位矩阵四、矩阵…

Django模版层

解析: forloop内置对象:运行结果解析 counter0: 从0开始计数 counter : 从1开始计数 first: True,判断循环的开始 last : Tues,判断循环的结束模版变量的书写 我们可以在html中编写python代码。 演示&#xff1a; {{ 填写变量 }}{% 填写类的 %}{{ d.0 }} {{ d.1 }…

找风景视频素材,就上这5个网站。

找风景视频素材那一定要上这6个网站&#xff0c;免费下载&#xff0c;赶紧收藏&#xff01; 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYxMjky 菜鸟图库网素材非常丰富&#xff0c;网站主要还是以设计类素材为主&#xff0c;高清视频素材也很多&#xff0c;像风景…

C++: 模板初阶

文章目录 一. 泛型编程二. 函数模板函数模板的原理函数模板的实例化隐式实例化: 让编译器根据实参推演模板参数的实际类型显示实例化: 在函数名后的<>中制定模板参数的世纪类型 模板参数的匹配原则 三. 类模板类模板的定义格式类模板的实例化 一. 泛型编程 如何实现一个…

汽车FMCW毫米波雷达信号处理流程(推荐---基础详细---清楚的讲解了雷达的过程---强烈推荐)------假设每个Chirp采集M个样本点

毫米波雷达在进行多目标检测时,TX发射一个Chirp,在不同距离下RX会接收到多个反射Chirp信号(仅以单个chirp为例)。 雷达通过接收不同物体的发射信号,并转为IF信号,利用傅里叶变换将产生一个具有不同的分离峰值的频谱,每个峰值表示在特定距离处存在物体。 请问,这种多目标…

《持续交付:发布可靠软件的系统方法》- 读书笔记(十四)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;十四&#xff09; 第 14 章 版本控制进阶14.1 引言14.2 版本控制的历史14.2.1 CVS14.2.2 SVN14.2.3 商业版本控制系统14.2.4 放弃悲观锁 14.3 分支与合并14.3.1 合并14.3.2 分支、流和持续集成 14.4 DVCS14.4.1 什么是 …

云课五分钟-04一段代码学习-大模型分析C++

前篇&#xff1a; 云课五分钟-03第一个开源游戏复现-贪吃蛇 经过01-03&#xff0c;基本了解云课最大的优势之一就是快速复现&#xff08;部署&#xff09;。 视频&#xff1a; 云课五分钟-04一段代码学习-大模型分析C AIGC大模型时代&#xff0c;学习编程语言的方式&#xf…

腾讯待办停止运营怎么办?导出的ics文件数据怎么打开查看

待办提醒类工具是日常办公及生活中必不可少的工具&#xff0c;使用待办提醒类工具可以记录很多容易忘记的事情&#xff0c;其可以帮助大家轻松管理各项事务和提高办事的效率。而随着工作的不断变动&#xff0c;大家选择待办提醒类工具也会不断的发生改变。 比如就拿我自己的使…

2023测试工程师做哪些准备,才能从众人中脱颖而出,不看后悔10年

最近&#xff0c;裁员的声音此起披伏。貌似我们只有努力奔跑&#xff0c;这一块带有命运诅咒的“石头”才不会轻易的落到我们的头上。 在不是金三银四、金九银十的求职旺季外&#xff0c;还会有机会吗&#xff1f;我想&#xff0c;对于有能力的人来说&#xff0c;任何时候都可…

(三)什么是Vite——Vite 主体流程(运行npm run dev后发生了什么?)

什么是vite系列目录: &#xff08;一&#xff09;什么是Vite——vite介绍与使用-CSDN博客 &#xff08;二&#xff09;什么是Vite——Vite 和 Webpack 区别&#xff08;冷启动&#xff09;-CSDN博客 &#xff08;三&#xff09;什么是Vite——Vite 主体流程(运行npm run dev…

慧眼APP开发项目

目录 第1章 项目概述... 3 第2章 可行性分析... 4 2.1 技术可行性... 4 2.2 数据可行性... 4 2.3 应用可行性... 4 第3章 环境搭建... 5 3.1 模型搭建... 5 3.1.1 安装PaddleDetection. 5 3.1.2 自定义数据集... 5 3.2 APP搭建... 5 3.2.1 安装Android Studio. 5 3.…

C++入门(1)—命名空间、缺省参数

目录 一、什么是C 1、C关键字(C98) 2、C兼容C 二、C程序预处理指令 三、命名空间 1、命名冲突 第一种&#xff1a; 第二种&#xff1a; 2、域作用限定符 3、实现命名空间 4、命名空间冲突 5、访问命名空间 6、命名空间“std” 四、输入输出 1、定义 2、自动识…

Python开源项目DifFace——人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色的实践

无论是自己、家人或是朋友、客户的照片&#xff0c;免不了有些是黑白的、被污损的、模糊的&#xff0c;总想着修复一下。作为一个程序员 或者 程序员的家属&#xff0c;当然都有责任满足他们的需求、实现他们的想法。除了这个&#xff0c;学习了本文的成果&#xff0c;或许你还…

如何在面试中胜出?接口自动化面试题安排上

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…