django 模版语言

django 模版语言

模版就是一个文本文件,可以生成HTML、XML等任何基于文本格式的文件,模版包含变量,变量会被值替换,标签 控制模版的逻辑,下面就是一个简单的模版文件

<h1>{{ section.title }}</h1>
{% for story in story_list %}
<h2><a href="{{ story.get_absolute_url }}">{{ story.headline|upper }}</a>
</h2>
<p>{{ story.tease|truncatewords:"100" }}</p>
{% endfor %}

####变量

  • 变量的形式是:{{variable}}, 当模板引擎遇到变量的时,引擎使用变量的值代替变量。使用"." 访问变量的属性,比如{{user.name}}。当模板引擎碰到"."的时候,模版系统会按照如下顺序查找:
    1. 字典查找,例如:foo[‘bar’]
    2. 属性查找,例如:foo.bar
    3. 方法查找,例如:foo.bar()
    4. list-index查找,例如foo[bar]

####过滤器

  • 通过过滤器可以改变变量的显示方式,过滤器的形式是:{{ variable | filter }},管道符号’|'代表使用过滤器,例如:{{value|default:“nohting”}}表示当value的为空或者None时就会显示"nothing"。

  • 过滤器能够采用链式的方式使用,例如:{{ text | lower }} 把变量text值转换为小写

  • 过滤器还可以带参数,例如: {{ bio|truncatewords:30 }}

  • 过滤器的参数中如果带有空格,那么需要用引号引起来,例如:{{ list | join : ", "}}

  • django中30个内建的过滤器

    1. add
      使用形式为:{{ value | add: “2”}}
      意义:将value的值增加2
      例如:value的值为4,那么输出结构为6
      注意:add首先尝试将两个值当作整数相加,如果失败就尝试把两个值组合在一起(比如遇到字符串或者list的时候),其他失败的情况最后返回一个空字符串,例如:表达式{{first|add:second}},first=[1,2,3],second=[4,5,6],那么输出结果为[1,2,3,4,5,6]

    2. addslashes
      使用形式为:{{ value | addslashes }}
      意义:在value中的引号(单引号和双引号)前增加反斜线
      例如:{{value|addslashes}},value=I' using Django,输出结果是:I\'m using Django.

    3. capfirst
      使用形式为:{{ value | capfirst }}
      意义:value的第一个字符转化成大写形式

    4. cut
      使用形式为:{{ value | cut:arg}}
      意义:移除value中包含arg的字符串
      例如,如果value是“String with spaces” arg是" “那么输出是"Stringwithspaces”

    5. date
      使用形式为::
      (a) {{ value | date:“D d M Y” }},例如,如果value是一个datetime对象(datetime.datetime.now())那么输出将是字符串"Wed 09 Jan 2008"
      (b) {{ value | date }},这种形式没有格式化字符串,这时候,格式化字符串会自动采用DATE_FORMAT所设置的形式。
      意义:将日期格式数据按照给定的格式输出

    6. default
      使用形式:{{ value | default: “nothing” }},例如,如果value是“”,那么输出将是nothing
      意义:如果value的意义是False,那么输出使用缺省值

    7. default_if_none
      使用形式:{{ value | default_if_none:“nothing” }},例如,如果value是None,那么输出将是nothing
      意义:如果value是None,那么输出将使用缺省值

    8. dictsort
      意义:如果value的值是一个字典,那么返回值是按照关键字排序的结果
      使用形式:{{ value | dictsort:“name”}},例如,
      如果value是:
      [
      {‘name’: ‘zed’, ‘age’: 19},
      {‘name’: ‘amy’, ‘age’: 22},
      {‘name’: ‘joe’, ‘age’: 31},
      ]
      那么,输出是:
      [
      {‘name’: ‘amy’, ‘age’: 22},
      {‘name’: ‘joe’, ‘age’: 31},
      {‘name’: ‘zed’, ‘age’: 19},
      ]

    9. dictsortreversed
      意义:如果value的值是一个字典,那么返回值是按照关键字排序的结果的反序
      使用形式:与上述(8)完全相同。

    10. divisibleby
      使用形式:{{ value | divisibleby:arg}},如果value是21,arg是3,那么输出将是True
      意义:如果value能够被arg整除,那么返回值将是True

    11. escape
      使用形式:{{ value | escape}}
      意义:替换value中的某些字符,以适应HTML格式,包括:

      < is converted to &lt;
      > is converted to &gt;
      ' (single quote) is converted to &#39;
      " (double quote) is converted to &quot;
      & is converted to &amp;
      
     escape仅仅在输出的时候才起作用,所以escape不能够用在链式过滤器的中间,
    

他应该总是最后一个过滤器,如果想在链式过滤器的中间使用,那么可以使用force_escape

12. escapejs使用形式:{{ value | escapejs }}意义:替换value中的某些字符,以适应JAVASCRIPT和JSON格式。例如:如果value的值是: `testing\r\njavascript \'string" <b>escaping</b>`, 那么输出:`testing\\u000D\\u000Ajavascript \\u0027string\\u0022 \\u003Cb\\u003Eescaping\\u003C/b\\u003E`13. filesizeformat使用形式:{{ value | filesizeformat }}意义:格式化value,使其成为易读的文件大小,例如:13KB,4.1MB等。
  1. first
    使用形式:{{ value | first }}
    意义:返回列表中的第一个Item,例如,如果value是列表[‘a’,‘b’,‘c’],那么输出将是’a’。

  2. floatformat
    使用形式:{{ value | floatformat}}或者{{value|floatformat:arg}},
    arg可以是正数也可以是负数。没有参数的floatformat相当于floatformat:-1
    (1)如果不带arg,那么引擎会四舍五入,同时最多只保留一位小数

    34.23234    {{ value|floatformat }}  34.2
    34.00000	{{ value|floatformat }}	34
    34.26000	{{ value|floatformat }}	34.3
    

    (2)如果arg是正数,那么引擎会四舍五入,同时保留arg位的小数。

    34.23234	{{ value|floatformat:3 }}	34.232
    34.00000	{{ value|floatformat:3 }}	34.000
    34.26000	{{ value|floatformat:3 }}	34.260
    

    (3)如果arg是负数,那么引擎会四舍五入,如果有小数部分,那么保留arg位小数;否则,则没有任何小数部分。

    34.23234	{{ value|floatformat:"-3" }}	34.232
    34.00000	{{ value|floatformat:"-3" }}	34
    34.26000	{{ value|floatformat:"-3" }}	34.26
    
  3. get_digit
    使用形式:{{ value | get_digit:“arg”}},例如,如果value是123456789,arg是2,那么输出是8
    意义:给定一个数字,返回,请求的数字,记住:1代表最右边的数字,如果value不是合法输入,那么会返回所有原有值。

  4. iriencode
    使用形式:{{value | iriencode}}
    意义:如果value中有非ASCII字符,那么将其进行转化成URL中适合的编码,如果value已经进行过URLENCODE,该操作就不会再起作用。

  5. join
    使用形式:{{ value | join:“arg”}},如果value是[‘a’,‘b’,‘c’],arg是’//'那么输出是a//b//c
    意义:使用指定的字符串连接一个list,作用如同python的str.join(list)

  6. last
    使用形式:{{ value | last }}
    意义:返回列表中的最后一个Item

  7. length
    使用形式:{{ value | length }}
    意义:返回value的长度。

  8. length_is
    使用形式:{{ value | length_is:“arg”}}
    意义:返回True,如果value的长度等于arg的时候,例如:如果value是[‘a’,‘b’,‘c’],arg是3,那么返回True

  9. linebreaks
    使用形式:{{value|linebreaks}}
    意义:value中的"\n"将被
    替代,并且整个value使用

    包围起来,从而适和HTML的格式
  10. linebreaksbr
    使用形式:{{value |linebreaksbr}}
    意义:value中的"\n"将被<br/>替代

  11. linenumbers
    使用形式:{{value | linenumbers}}
    意义:显示的文本,带有行数。

  12. ljust
    使用形式:{{value | ljust}}
    意义:在一个给定宽度的字段中,左对齐显示value

  13. center
    使用形式:{{value | center}}
    意义:在一个给定宽度的字段中,中心对齐显示value

  14. rjust
    使用形式:{{value | rjust}}
    意义:在一个给定宽度的字段中,右对齐显示value

  15. lower
    使用形式:{{value | lower}}
    意义:将一个字符串转换成小写形式

  16. make_list
    使用形式:{{value | make_list}}
    意义:将value转换成一个list,对于字符串,转换成字符list;对于整数,转换成整数list
    例如value是Joel,那么输出将是[u’J’,u’o’,u’e’,u’l’];value是123,那么输出将是[1,2,3]

  17. pluralize
    使用形式:{{value | pluralize}},或者{{value | pluralize:“es”}},或者{{value | pluralize:“y,ies”}}
    意义:如果value不是1,则返回一个复数后缀,缺省的后缀是’s’

  18. random
    使用形式:{{value | random}}
    意义:从给定的list中返回一个任意的Item

  19. removetags
    使用形式:{{value | removetags:“tag1 tag2 tag3…”}}
    意义:删除value中tag1,tag2…的标签。例如,如果value是<b>Joel</b> <button>is</button> a <span>slug</span>
    tags是"b span",那么输出将是:Joel <button>is</button> a slug

  20. safe
    使用形式:{{value | safe}}
    意义:当系统设置autoescaping打开的时候,该过滤器使得输出不进行escape转换

  21. safeseq
    与上述safe基本相同,但有一点不同的就是:safe是针对字符串,而safeseq是针对多个字符串组成的sequence

  22. slice
    使用形式:{{some_list | slice:":2"}}
    意义:与python语法中的slice相同,:2表示第一的第二个元素

  23. slugify
    使用形式:{{value | slugify}}
    意义:将value转换成小写形式,同事删除所有分单词字符,并将空格变成横线
    例如:如果value是Joel is a slug,那么输出将是joel-is-a-slug

  24. stringformat
    这个不经常用,先不说
    简单举个例子:如果value是 10,那么输出 1.000000E+01

  25. striptags
    使用形式:{{value | striptags}}
    意义:删除value中的所有HTML标签

  26. time
    使用形式:{{value | time:“H:i”}}或者{{value | time}}
    意义:格式化时间输出,如果time后面没有格式化参数,那么输出按照TIME_FORMAT中设置的进行。

  27. title
    转换一个字符串成为title格式。
    如: value是 “my first post”,输出: “My First Post”

  28. truncatewords
    使用形式:{{value | truncatewords:2}}
    意义:将value切成truncatewords指定的单词数目
    例如,如果value是Joel is a slug 那么输出将是:Joel is …

  29. truncatewords_html
    使用形式同(39)
    意义:truncation点之前如果某个标签打开了,但是没有关闭,那么在truncation点会立即关闭。
    因为这个操作的效率比truncatewords低,所有只有在value是html格式时,才考虑使用。

  30. upper
    转换一个字符串为大写形式

  31. urlencode
    将一个字符串进行URLEncode

  32. urlize
    意义:将一个字符串中的URL转化成可点击的形式。
    使用形式:{{ value | urlize }}
    例如,如果value是Check out www.djangoproject.com,那么输出将是:
    Check out www.djangoproject.com

  33. urlizetrunc
    使用形式:{{ value | urlizetrunc:15}}
    意义:与(43)相同,但是有一点不同就是现实的链接字符会被truncate成特定的长度,后面以…现实。

  34. wordcount
    返回字符串中单词的数目

  35. wordwrap
    使用形式:{{value | wordwrap:5}}
    意义:按照指定的长度包装字符串
    例如,如果value是Joel is a slug,那么输出将会是:
    Joel
    is a
    slug

  36. timesince
    使用形式:{{value | timesince:arg}}
    意义:返回参数arg到value的天数和小时数
    例如,如果 blog_date 是一个日期实例表示 2006-06-01 午夜, 而 comment_date 是一个日期实例表示 2006-06-01 早上8点,
    那么 {{ comment_date|timesince:blog_date }} 将返回 “8 hours”.

  37. timeuntil
    使用形式:{{value | timeuntil}}
    意义:与(47)基本相同,一个不同点就是,返回的是value距离当前日期的天数和小时数。

###三、标签

  1. 标签的形式是:{% tag %},标签要比变量复杂

  2. 标签的作用
    (1)在输出时创建一些文本
    (2)通过执行循环和一些逻辑来实现控制流
    (3)装载一些外部信息进入模板

  3. 内建标签
    (1)autoescape

     使用形式:{% autoescape off %}(内容){% endautoescape %}意义:当某块内容不需要自动转义的时候,这样写就可以了。当然如果块内某些地方需要转义的话,调用filter也可以。
    

    (2)block

      使用形式:{% block %}(定义块内容){% endblock %}意义:定义一个块,该块能够被继承他的子孙模板重写
    

    (3)comment

      使用形式:{% comment %}(内容){% endcomment %}意义:模板系统会忽略该标签内部的所有内容。
    

    (4)cycle

      使用形式:例如:<tr class="{% cycle list%}">...</tr>意义:在循环时轮流使用给定的字符串列表中的值。
    

    (5)extends

      使用形式:{% extends "base.html" %}或者{% extends variable %}变量可以是一个字符串,也可以是一个模板对象。意义:表示本模板要对指定的父模板进行扩展。
    

    (6)filter

      使用形式:{%filter force_escape|lower%}(内容){%endfilter%}意义:将filter 标签圈定的内容执行过滤器操作。
    

    (7)firstof

      使用形式:{%firstof var1 var2 var3%}意义:输出第一个值不等于False的变量等价于:               {% if var1 %}{{ var1 }}{% else %}{% if var2 %}{{ var2 }}{% else %}{% if var3 %}{{ var3 }}{% endif %}{% endif %}{% endif %}
    

    (8)for

      使用形式:{% for variable in list/dict %}(使用variable){% endfor%}意义:循环list中的每个值,进行相应的输出注意:(a)也可以反向遍历{% for variable in list/dict reversed %}(b)也可以{% for x, y in points %} points中的每个元素为 (x,y)(c)也可以{% for key,value in data.items %}   data是一个dictionary for loop中定义的一些内建变量forloop.counter         当前的迭代器数目(从1开始)forloop.counter0        当前的迭代器数目(从0开始)forloop.revcounter      当前的反向迭代器数目(从1开始)forloop.revcounter0     当前的反向迭代器数目(从0开始)forloop.first           值为True,如果是第一次通过迭代器forloop.last            值为True,如果是最后一次通过迭代器forloop.parentloop      对于嵌套循环,这是当前循环的上一层循环
    

    (9)for … empty

      使用形式如下:{% for varibale in list %}(内容1){% empty %}(内容2){% endfor %}意义:当list是空的时候,能够执行内容2,其形式等同于,先if判断list是否存在,然后在根据情况做什么操作。
    

    (10)if

      使用形式如下 :{% if variable %}(内容1){% else %}(内容2){% endif %}注意:variable中可以使用and or 或者not,但是有一条必须记住,就是不允许and 和 or一起使用
    (11)ifchanged使用形式:(a)如果直接检测循环变量是否变化,那么使用:{% ifchanged %}  (内容){% endifchanged %}(b)如果检测循环变量的某个dot变量,例如循环变量是date,那么检测date.hour,那么使用:{% ifchanged date.hour%}  (内容){% endifchanged %}    (c)ifchanged也可以加上一个{% else %}语句意义:检测本次循环的值和上一次循环的值一样不一样,只能用在循环里面。 
    (12)ifequal使用形式:{% ifequal variable1 variable2 %}...{% endifequal %}意义:判断两个变量是否相等。
    (13)ifnotequal使用与(12)相同
    (14)include使用形式:{% include "foo/bar.html" %}或者{% include template_name %}意义:将另外一个模板文件中的内容添加到该文件中。注意区别extend是继承。
    (15)now使用形式:{% now "jS F Y H:i "%},注意存在需要转义的情况例如{% now "jS o\f F" %},因为f是格式化字符串
    

具体的格式化字符串如下所示:
a
‘a.m.’ or ‘p.m.’ (Note that this is slightly different than PHP’s output, because this includes periods to match Associated Press style.) ‘a.m.’
A
‘AM’ or ‘PM’. ‘AM’

b
Month, textual, 3 letters, lowercase. ‘jan’

B
Not implemented.

d
Day of the month, 2 digits with leading zeros. ‘01’ to ‘31’

D
Day of the week, textual, 3 letters. ‘Fri’

f
Time, in 12-hour hours and minutes, with minutes left off if they’re zero. Proprietary extension. ‘1’, ‘1:30’

F
Month, textual, long. ‘January’

g
Hour, 12-hour format without leading zeros. ‘1’ to ‘12’

G
Hour, 24-hour format without leading zeros. ‘0’ to ‘23’

h
Hour, 12-hour format. ‘01’ to ‘12’

H
Hour, 24-hour format. ‘00’ to ‘23’

i
Minutes. ‘00’ to ‘59’

I
Not implemented.

j
Day of the month without leading zeros. ‘1’ to ‘31’

l
Day of the week, textual, long. ‘Friday’

L
Boolean for whether it’s a leap year. True or False

m
Month, 2 digits with leading zeros. ‘01’ to ‘12’

M
Month, textual, 3 letters. ‘Jan’

n
Month without leading zeros. ‘1’ to ‘12’

N
Month abbreviation in Associated Press style. Proprietary
extension. ‘Jan.’, ‘Feb.’, ‘March’, ‘May’

O
Difference to Greenwich time in hours. ‘+0200’

P
Time, in 12-hour hours, minutes and ‘a.m.’/‘p.m.’, with minutes left off if they’re zero and the special-case strings ‘midnight’ and ‘noon’ if appropriate. Proprietary extension. ‘1 a.m.’, ‘1:30 p.m.’, ‘midnight’,‘noon’, ‘12:30 p.m.’

r
RFC 2822 formatted date. ‘Thu, 21 Dec 2000 16:01:07+0200’

s
Seconds, 2 digits with leading zeros. ‘00’ to ‘59’

S
English ordinal suffix for day of the month, 2 characters. ‘st’, ‘nd’, ‘rd’ or ‘th’

t
Number of days in the given month. 28 to 31

T
Time zone of this machine. ‘EST’, ‘MDT’

U
Not implemented.

w
Day of the week, digits without leading zeros. ‘0’ (Sunday) to ‘6’ (Saturday)

W
ISO-8601 week number of year, with weeks starting on Monday. 1, 53

y
Year, 2 digits. ‘99’

Y
Year, 4 digits. ‘1999’

z
Day of the year. 0 to 365

Z
Time zone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive.

(16)spaceless
使用形式:{% spaceless %}
(内容)
{% endspaceless %}
意义:删除包围内容中的所有tab或者回车字符。

(17)template
使用形式:{% templatetag %}
意义:模板系统本身没有转义的概念,因此如果要输出一个像“{%”这样的东东,就需要采用这种方式,否则就会语法错误
其参数有:

openblock	{%
closeblock	%}
openvariable	{{
closevariable	}}
openbrace	{
closebrace	}
opencomment	{#
closecomment	#}

(18)with

使用形式:
{% with “expensive var1” as var2 %}
{% endwith %}
意义:当一个变量的访问消耗很大的模板解析时,可以用另外一个变量替换它,这种替换只有在with内部有效。

(19)url
使用形式:{% url path.to.some_view arg1,arg2 %}
意义:给定某个module中函数的名字,给定参数,那么模板引擎给你一个URL,从而避免硬编码URL到代码中

注意:前提是URLconf中存在相应的映射,如果URLconf中没有该映射,那么会抛出异常,
这是可以选择使用
{% url path.to.view arg1 ,arg2 as the url %}
Link to optional stuff
其实这相当于
{% url path.to.view as the_url %}
{% if the_url %}
Link to optional stuff
{% endif %}

参考:
https://docs.djangoproject.com/en/dev/ref/templates/builtins/
http://lishiguang.iteye.com/blog/1332529

####escape
转义,遇到<div>等标签时,django默认就会进行转义成$lt;div$gt;,在页面上看到了也是<div>。如果对于某些<a>标签不想转义,有如下几种方式:

  1. 在模版中使用 safe 过滤器,如:{{data|safe}}
  2. 在模版中使用 autoescape 标签,如:{%autoescape off %} {{data}} {%endautoescape%}
  3. 在view中修改设置Context的autoscape属性为False,如:context = Context({‘url’:url},autoescape=False),需要注意的是它的优先级低于第二条,意味着如果在template中显示的设置了{%autoescape on %}那么在context设置为autoescape=False也不会生效

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

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

相关文章

Win32 API 控制台鼠标操作、坐标获取与相关函数介绍

Win32 API 控制台鼠标操作、坐标获取与相关函数介绍 一、前置介绍读取控制台输入缓冲区数据 ReadConsoleInput 函数控制台输入缓冲区中的输入事件 INPUT_RECORD 结构鼠标输入事件 MOUSE_EVENT_RECORD 结构更改输入模式 SetConsoleMode 函数 二、鼠标坐标获取(以下代码环境为 VS…

PCL 3D-SIFT关键点检测(Z方向梯度约束

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 SIFT关键点检测 2.1.2 可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#…

SQL优化 where谓词条件OR优化

1.测试表&#xff0c;及测试语句where条件中OR对应两个字段选择度很高 create table t618 as select * from dba_objects; select object_name from t618 where (object_id12043 or DATA_OBJECT_ID12043) and STATUSVALID; 2.没有索引情况下&#xff0c;全表扫描逻辑读…

C++核心编程和桌面应用开发 第九天(静态多态 动态多态 纯虚函数 抽象类 虚析构 纯虚析构 向上向下类型转换 重载重写重定义)

目录 1.1静态多态 1.2动态多态 1.2.1满足条件 1.2.2动态多态的使用条件 1.3纯虚函数和抽象类 1.3.1纯虚函数 1.3.2抽象类 1.4虚析构/纯虚析构 1.5向上向下类型转换 1.5.1向下类型转换 1.5.2向上类型转换 1.5.3多态中的类型转换 1.6重载重写重定义 1.6.1重载 1.6…

qwt实现码流柱状图多色柱体显示

qwt实现码流柱状图多色柱体显示 1. 前言2. qt实现柱状图3.qwt基础说明3.1 qwt安装与使用3.1.1 下载qwt源码3.1.2 编译3.1.3 安装3.1.4 使用3.2 QwtPlotBarChart类3.2.1画图步骤3.2.2 specialSymbol3.3.3 barTitle4 BsBarChart定制4.1 每个柱体可以显示不同的颜色4.2 每个柱体可…

MFC项目如何使用hiredis库连接redis

如何在windows平台使用c连接redis 1. 下载hiredis的vs工程文件2. 使用vs2022编译hiredis3.项目中调用4. 集群连接5. 简单的封装下 最近需要在windows PC终端读取redis数据。我这里使用hiredis连接redis. 工程是vs2022开发的。 1. 下载hiredis的vs工程文件 windows平台需要自己…

【C/C++】错题记录(七)

题目一 题目二 C在调用函数时&#xff0c;当实参和形参的数据类型不一致时&#xff0c;会发生数据类型转换&#xff01;将低精度转换为高精度时&#xff0c;由编译器隐式完成&#xff1b;将高精度转换为低精度时&#xff0c;必须用强制类型转换运算符&#xff1b; static_cast…

Redis:分布式 - 哨兵

Redis&#xff1a;分布式 - 哨兵 概念哨兵 Docker 搭建哨兵分布式选举流程 概念 Redis 的主从复制模式下&#xff0c;一旦主节点由于故障不能提供服务&#xff0c;需要人工进行主从切换&#xff0c;同时大量的客户端需要被通知切换到新的主节点上&#xff0c;对于上了一定规模…

浏览器动态移动的小球源码分享

浏览器动态移动的小球源码分享 <script>(function(a){var width100,height100,borderRadius100,circlefunction(){};circle.prototype{color:function(){let colour "#"Math.floor(Math.random()*255).toString(16)Math.floor(Math.random()*255).toString…

Linux块设备驱动实验

直接参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 本文仅作为个人笔记使用&#xff0c;方便进一步记录自己的实践总结。 前面我们都是在学习字符设备驱动&#xff0c;本章我们来学习一下块设备驱动框架&#xff0c;块设备驱动是Linux 三大驱动类型之一。块设备驱动要远…

Fiddler配合wireshark解密ssl

环境&#xff1a; win11&#xff08;wireshark&#xff09;--虚拟机win7&#xff08;Fiddler&#xff09;---虚拟机win7&#xff08;HTTPS站点&#xff09; 软件安装问题&#xff1a; 需要.net环境&#xff0c;NDP461-KB3102436-x86-x64-AllOS-ENU.exe。 安装fiddler后安装下…

vite项目打包md5报‘default‘ is not exported错误的解决方法

报错如下&#xff1a; 某一个包中用es方式引入md5模块&#xff0c;导致打包报错&#xff0c;经过一番探究测试&#xff0c;发现我的项目中用了“vite-plugin-require-transform”这个插件&#xff0c;是这个插件在做转换的时候报错了&#xff0c;如果你也是这个原因可按我的方式…

代码随想录day24:贪心part2

121. 买卖股票的最佳时机 class Solution {public int maxProfit(int[] prices) {int ans 0;int minPrice prices[0];for(int p : prices){ans Math.max(ans, p - minPrice);minPrice Math.min(p, minPrice);}return ans;} } 运用前缀和思想&#xff0c; 从左到右枚举卖…

Spring Boot教学资源库:构建微服务的基石

2 相关技术简介 2.1Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xff0c;任…

dart-sass和node-sass的区别,使用dart-sass后可能会出现的问题

前言&#xff1a; 2020 年 10 月 27 日&#xff0c;Sass 官方团队正式宣布 Libsass 将弃用&#xff0c;以及基于它的 Node Sass 和 SassC&#xff0c;并且建议用户使用 Dart Sass。如果在 vue 脚手架搭建的项目中需要使用 sass&#xff0c;建议初始化时勾选 sass 配置&#xff…

前端优化之路:git commit 校验拦截

但是想要做到高效落地执行&#xff0c;就需要做些别的功课&#xff0c;先展示下成果图 需要了解git hooks&#xff0c;它是git的钩子&#xff0c;就像vue拥有自己的钩子一样。 官方文档&#xff1a;https://git-scm.com/docs/githooks 项目安装 husky&#xff0c;建议稳定版本…

patch函数前两个参数位

如我们多了解的&#xff0c;patch函数前两个参数位为 oldVnode 和 Vnode &#xff0c;分别代表旧节点和新节点&#xff0c;主要做了四个判断&#xff1a; patchVnode主要做了两个判断&#xff1a;

java中Math类和Random类的api

目录 Math 类 1&#xff09;abs(x) 2&#xff09;ceil(x) 3&#xff09;floor(x) 4&#xff09;round(x) 5&#xff09;max(x, y) 6&#xff09;min(x, y) 7&#xff09;sqrt(x) 8&#xff09;pow(x, y) 9&#xff09;random() 10&#xff09;sin(x), cos(x), tan(x) 11&#x…

购物网站毕业设计-电子电器商城管理系统SpringBootSSM框架开发

目录 1. 系统概述 1.1背景介绍 1.2 课题意义 1.3课题目标 2. 主要功能模块 2.1 前端用户模块 2.2 后端管理模块 2.3 功能图展示 3. 技术选型 3.1 VUE介绍 3.2 JAVA介绍 3.3 MySQL介绍 4. 系统设计 4‌.1数据库设计 5 详细设计 5.1 界面展示 设计一个电子电…

通过Keil5编译软件获取函数最深堆栈

文章目录 1.问题提出2.问题分析3.环境搭建4.解决方案5.经验总结6.疑问 1.问题提出 在编写新软件时&#xff0c;由于某功能需要使用RAM约24KB&#xff0c;而新模块的总RAM是96KB&#xff0c;该某功能一旦开启则需要占用四分之一的RAM空间。为了保证在开启某功能后&#xff0c;新…