Django之模版层

文章目录

  • 模版语法传值
  • 模版语法传值特性
  • 模版语法标签
    • 语法格式
    • 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 }} 	让他使用之前原主页的内容'''	

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLO目标检测——树叶检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;生物多样性研究、林业管理、环境监测和教育科研等方面数据集说明&#xff1a;树叶分类检测数据&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;总共十个类别。标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标…

【文件读取/包含】任意文件读取漏洞 afr_2

1.1漏洞描述 漏洞名称任意文件读取漏洞 afr_2漏洞类型文件读取漏洞等级⭐⭐漏洞环境dockers攻击方式 1.2漏洞等级 高危 1.3影响版本 暂无 1.4漏洞复现 1.4.1.基础环境 靶场dockers工具BurpSuite 1.4.2.环境搭建 1.kali创建docker-compose.yml文件 touch docker-compose.ym…

d3dx9_39.dll丢失怎么修复?d3dx9_39.dll丢失的四种修复办法分享

d3dx9_39.dll是DirectX库中的一个重要组件&#xff0c;属于Microsoft Direct3D 9 API。它提供了许多用于创建和渲染3D图形的函数。DirectX是一套开发多媒体应用程序的API&#xff0c;广泛应用于游戏、视频和图形处理等领域。d3dx9_39.dll文件主要负责处理3D图形渲染、动画、光源…

【C++】多态的使用详解

本篇要分享的内容是多态&#xff0c;以下为本篇目录。 目录 1.多态的概念 2. 多态的定义及实现 3.虚函数 4.C11 override和final 4.1final关键字 4.2override关键字 5.抽象类 5.1抽象类的概念 5.2接口继承和实现继承 1.多态的概念 通俗来说&#xff0c;就是多种形态…

【C++】泛型编程 ② ( 函数模板与普通函数区别 )

文章目录 一、函数模板与普通函数区别1、函数模板与普通函数区别2、代码示例 - 函数模板与普通函数区别 一、函数模板与普通函数区别 1、函数模板与普通函数区别 函数模板与普通函数区别 : 主要区别在于它们能够处理的 数据类型数量 和 灵活性 ; 自动类型转换 : 函数模板 不允许…

程序员进阶之路,该怎么走?

时代洪流&#xff0c;大浪淘沙。 逆水行舟&#xff0c;不进则退。 如果你游的速度慢于水流&#xff0c;要么你就是被剩下的沙子&#xff0c;要么就是即将被打翻的行舟了。。。 身为程序员时刻保持危机感&#xff0c;然后陷入内卷...... 卷又卷不赢&#xff0c;躺又躺不平。 …

基于stm32f103系列的简单软件I2C和硬件I2C通讯

这篇文章主要分为三个部分来阐述&#xff0c;分别是I2C的基本知识&#xff0c;软件I2C通讯&#xff0c;硬件I2C通讯。I2C的基本知识这一块&#xff0c;部分讲解以及图表来自b站江科大的up&#xff0c;很感谢这位up&#xff0c;大家可以关注一波。操作实现的时候&#xff0c;up使…

2022年06月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 广场中有声控喷泉,当声音的音量大于60的时候,喷泉就会喷出水,现在的音量为30,下列哪个选项可以让喷泉喷出水? A: B: C: D: 答案:B 当前声音的音量为30,需要将声音增加到60以上就可以让喷泉喷出水,选项A将声音…

cadence virtuoso layout drc error

问题&#xff1a; The BORDER layer must enclose all chip layout patterns, which all chip layout patterns include seal ring if seal ring has been added by designers. This rule checking includes the layers of DNW,AA,NW,NC,PC,MVN, MVP,DG,GT,SN,SP,SAB,CT,M1,V1…

Java 轻松删除PDF指定页、空白页 (免费工具分享)

对PDF页面的增删通常需要借助专门的工具&#xff0c;而这些工具一般需要付费才能使用。那么我们可以通过Java代码免费实现这一功能吗&#xff1f;答案是肯定的。这篇文章就教大家如何使用一个免费的国产Java库来删除PDF中的指定页面或者删除PDF中的空白页。 使用Java快速删除PD…

2022年03月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 天天收到了一个语音机器人,当天天说“a”的时候,机器人会说“apple”,当天天说“b”的时候,机器人会说“banana”, 当天天说“c”的时候,机器人会说“cat”,如果天天说其它内容,机器人就会说“I don’t know”。机器人可…

【论文精读】VOYAGER: An Open-Ended Embodied Agent with Large Language Models

Understanding LSTM Networks 前言Abstract1 Introduction2 Method2.1 Automatic Curriculum2.2 Skill Library2.3 Iterative Prompting Mechanism 3 Experiments3.1 Experimental Setup3.2 Baselines3.3 Evaluation Results3.4 Ablation Studies3.5 Multimodal Feedback from …

Vue3实现 SKU 规格

效果图 1 HTML 基本结构 1.1 遍历 SKU 规格数据 <template><div class"productConten"><div v-for"(productItem, productIndex) in specifications" :key"productItem.name"><div class"productTitle">{…

OpenCV的应用——道路边缘检测

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉库&#xff0c;它提供了丰富的图像处理和计算机视觉算法&#xff0c;使得开发者可以便捷地进行图像处理、对象识别、图像分割等任务。道路边缘检测是计算机视觉中的重要应用之一&…

Hive入门--学习笔记

1&#xff0c;Apache Hive概述 定义&#xff1a; Hive是由Facebook开源用于解决海量结构化日志的数据统计&#xff0c;它是基于大数据生态圈Hadoop的一个数据仓库工具。 作用&#xff1a; Hive可以用于将结构化的数据文件【映射】为一张表&#xff0c;并提供类SQL查询功能。 H…

前端实现RSA非对称加密及生成RSA公私密钥

前端实现RSA非对称加密 RSA简介安装jsencryptRSA加密RSA解密如何生成公私秘钥&#xff08;windows&#xff09; RSA简介 RSA用于保密性时&#xff0c;就是公钥加密&#xff0c;私钥解密。 因为公钥是可以公开了&#xff0c; 那么任何人都可以使用公钥对信息进行加密&#xff0…

嵌入式Linux开发,NFS文件系统挂载

在嵌入式linix的开发中&#xff0c;经常会需要在pc端和板端互相传输文件&#xff0c;优先可选择ftp传输&#xff0c;但是有些嵌入式板端不支持&#xff0c;只能使用nfs这种方式&#xff0c;即pc端作为服务端&#xff0c;板端作为客户端&#xff0c;将pc端的某个文件夹挂载到板端…

时间序列预测各类算法探究上篇

前言&#xff1a; 最近项目需要对公司未来业绩进行预测&#xff0c;以便优化决策&#xff0c;so 研究一下时序算法。纯个人理解&#xff0c;记录以便备用&#xff08;只探究一下原理&#xff0c;所有算法都使用基本状态&#xff0c;并未进行特征及参数优化&#xff09;。 环境…

Windows本地配置带GPU的Pytorch环境

首先需要安装并配置好Anaconda环境&#xff0c;安装教程教程随便找一个就好。 第一步&#xff1a;安装好之后创建conda虚拟环境&#xff1a; conda create -n your_env_name pythonx.x 第二步&#xff1a;安装需要版本的pytorch&#xff1a;pytorch下载链接 cu100/torch-1.2…

很多工程师,最后都是被生活裹挟,没法一直在技术路径走到极致

最近比较少更了&#xff0c;但内容一直在写&#xff0c;只是从长文变成了短文&#xff0c;直接发朋友圈了。 如果喜欢我写的内容&#xff0c;请移步到朋友圈。 我是一个不喜欢讲哲理的人&#xff0c;感觉哲学都是理论&#xff0c;都是鸡血&#xff0c;很难落地&#xff0c;我…