范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Django的filter和tag使用说明和如何自定义

  那么首先来说明下什么时Filter什么时tag了,如何去区分了
  1、在使用上区别:
  filter 使用方法{{ obj|filter:param }}
  tag使用方法{% tags %}
  2、filter可以使用作为if判断语句的标签,标签时不可以的
  3、filter最多只能传递两个参数,而且tag可以传递多个
  filter使用说明
  语法的格式如下
  {{ obj|filter:param }}
  obj 我们需要处理的对象
  filter 我们的filter,常见有如下罗列出的
  param filter的参数
  1、add
  添加相应的值,这个比较好理解,例如:
  {{ 3|add:2 }}   //那么这个就是3+2最后结果等于5,当然了我们的3一般时python传过来的变量了。
  注意前面的obj只能时整形数值,字符串无法相加
  age|add:3
  2、addslashes
  给变量中的引号前加上斜线,就是转译引号,
  例如:
  {{  "q"mm"df"  |  addslashes  }}
  那么该输出接入如下
  q"mm"df
  3、capfirst
  首字目大写,很好理解不多说
  例如:
  {{  "q"mm"df"  |  capfirst  }}
  那么输出结果如下:
  Q"mm"df
  4、cut
  把指定的字符串剪切掉
  例如我们把单引号去掉:
  {{  "q"mm"df"  |  cut  :  """  }}
  输出如下:
  Qmmdf
  5、date
  格式化时间日期显示,注意了,需要处理的对象必须时时间对象类型
  例如:
  dt变量类容为:{{   dt   }}
  处理后的内容:{{   dt  |  date  :  "Y-m-d"   }}
  输出结果如下:
  dt变量类容为:April 6, 2018, 1:07 p.m.
  处理后的内容:2018-04-06
  6、default
  如果值是False,就替换成设置的默认值,否则就是用本来的值
  例如:
  {{  False  |  default  :  "这是False"  }}
  {{  True  |  default  :  "这是True"  }}
  输出结果如下:
  这是False
  True
  7、default_if_none
  如果值是None,就替换成设置的默认值,否则就使用本来的值,和default差不多原理
  例如:
  {{   None  |  default_if_none  :  "没有值默认替换"   }}
  {{   " "  |  default_if_none  :  "就算有一个空格也是不会替换的"   }}
  输入结果如下:
  没有值默认替换
  8、filesizeformat
  对数字进行格式化,IT中经常使用到的容量显示技术
  例如:
  {{   "5120"  |  filesizeformat   }}
  结果就是
  5.0 KB
  9、first、last、slice
  字符串处理,first取第一个字符,last去最后一个字符,slice切片和python中一样使用
  例如:
  {{ "5120"|last }}
  {{ "5120"|first }}
  {{ "5120"|slice:":-2" }}
  结果:
  0
  5
  51
  10、safe、autoescape、striptags   让浏览器渲染我们的变量内容,   例如:   原始变量:{{ dt }}   有时候我们想浏览器去渲染我们在数据库等地方取出来的html语言:   第一种方法,也是最常用的,使用safe:   {{ dt | safe }}   第二种方法,使用autoescape off,注意了autoescape 就是标签了:   {% autoescape off %}   {{ dt }}   {% endautoescape %}   第三种方法,使用striptags,注意该方法,会去除html语言标记哦:   {{ dt | striptags }}   效果如下:   当然还有很多的filter,以上罗列出来的只是我们常用的,更多的filter请查看官方文档   https://docs.djangoproject.com/en/2.0/ref/templates/builtins/   一般常用的标签tag说明:   1、最常用的if标签 {% if %}   {% if 条件表达式 %}   表达式成立执行代码块   {% elif 条件表达式 %}   表达式成立执行代码块   {% else %}   所有表达式不成立执行代码块   {% endif %}   2、循环标签{% for %}的使用   {% for object in objects %}   执行的循环体   {% endfor %}   3、{%csrf_token%} 跨站攻击校验   请求网页时会生成一个csrf校验字符串,防止跨站请求工具,注意如果我们使用render_to_response方法,这个就不生效。   使用方法,在from表单中直接使用{% csrf_token %}   在前台我们每次请求,会随机生产一个校验码,在表单提交时后台会进行校验   4、{% url %} 链接url   显示指定路由的URL路径,具体查看上面的两个截图,我们需要在url路由指定name,前面进行调用   5、{% with %} 变量替换   例如把一个长的变量做一个短的别名   {% with total=www.qnjslm.com %}   {{ total }}   {% endwith %}   6、{% verbatim %}: 禁止进行渲染   有时候我们需要在页面上显示模板语言的原型,就会用到verbatim ,还记得上面的safe的filter   {% verbatim %}   {{ 123|add:2 }}   {% endverbatim %}   7、{% load %}加载标签库   我们使用最多的就是加载自定义标签库了,产靠下一节的演示   现在来介绍我们自定义Tag以及Filter   第一步:在APP目录下创建一个模块名字为templatetags(注意名字必须时这个)   第二步:在templatetags目录下创建py文件,这个文件名字可以随意了   第三步:创建我们自定义的filter以及tag   1、首先需要引用template,如果需要返回html内容需要引入mark_safe   from django import template   from django.utils.safestring import mark_safe   2、实例化一个对象,注意这里必须使用register 来接收,不可以使用其他名称   register = template.Library()   3、定义自已的函数,使用装饰器@register.filter、@register.simple_tag   4、在Django的设置中,在APP中一定加载我们的APP名称   5、在模板中我们使用load加载我们的文件名,就可以安装上面的方法进行使用   {% load my_test %}   详细代码(my_test):   from django import template   from django.utils.safestring import mark_safe   register = template.Library()   @register.filter   def filter_multi(v1, v2):   return v1 * v2   @register.simple_tag   def tag_multi(v1, v2, v3):   return v1 * v2 + v3   @register.simple_tag   def input_multi(id, name, class_name):   result = "" % (id, class_name, name)   return mark_safe(result)   模板中我们使用   前台的效果如下图   模板的标签(Tags):   标签的使用:{% Tags %}   autoescape   自动转义标签,要在html中原样输出html标签的时候使用   {% autoescape on %}   {{ body }}   {% endautoescape %}   对body的内容进行转义,原样输出html标签   block   模板继承,详细看模板继承   comment   多行注解,忽略、不输出{% comment %}{% endcommit %}标签里面的内容   csrf_token   防止跨站点攻击,在表单标签中添加{%csrf_token%}   cycle   用于循环产生字段   {% for o in some_list %}   {% cycle "one" "two" %}   {% endfor %}   这将会在for循环中交替出现row1和row2字符串   结果为(some_list的长度为5):   one   two   one   two   one   cycle的参数可以为字符串或者为变量   {% cycle "one" "two" as str %}->{{str}}   可以在循环中多次引用字符串   结果为:   one->one   two->two   one->one   two->two   one->one   debug   输出整个调试信息负载,包括当前上下文和导入的模块   extends   与block标签配合使用   filter   {% filter upper|lower %}   this is text   {% endfilter %}   将filter标签里面的经过upper处理在将结果经过lower处理,filter参数可选择多个   firstof   输出第一个不是False的参数   {% firstof var1 var2 var3 %}   等同于   {% if var1 %}   {{ var1 }}   {% elif var2 %}   {{ var2 }}   {% elif var3 %}   {{ var3 }}   {% endif %}   {% firstof var1 var2 var3 "fallback value" %}   当所有参数都为False时,输出"fallback value"   此标签自动转义默认值参数:   {% autoescape off %}   {% firstof var1 var2 var3 "fallback value" %}   {% endautoescape %}   可以使用safe管道符忽略转义:   {% firstof var1 var2|safe var3 "fallback value"|safe %}   可以用一下语法将输出值储存在变量value中:   {% firstof var1 var2 var3 as value %}   for   点运算符:   variable.object   优先返回   varialbe["object"] #字典类型查找   variable.object #属性查找   variable.object() #方法调用   variable[object] #列表索引查找   for循环设置中可用的变量   forloop.counter 循环的当前迭代(1索引)   forloop.counter0 循环的当前迭代(0索引)   forloop.revcounter 循环结束时的迭代次数(1索引)   forloop.revcounter0 循环结束时的迭代次数(0索引)   forloop.first 如果这是第一次迭代,则为真   forloop.last 如果这是最后一次迭代,则为真   forloop.parentloop 对于嵌套循环,这是上一循环的forloop对象   for....empty   配合for标签使用   {% for number in numbers %}   number   {% empty %} #numbers对象为空时执行   the numbers is empty   {% endfor %}   if   条件判断语句   {% if athlete_list %}   one   {% elif athlete_in_locker_room_list %}   two   {% else %}   three   {% endif %}   在if标签中可以使用布尔运算符or and not等   在同一标签中同时使用and 和or时and的优先级将大于or   {% if athlete_list and coach_list or cheerleader_list %}   等于   if (athlete_list and coach_list) or cheerleader_list   if标签也可以用运算符 == != < > <= >= in is   {% if a > b and b > c %}   也可以在if标签中使用过滤器   {% if messages|length >= 100 %}   You have lots of messages today!   {% endif %}   ifchanged   {% for t in text %}   {% ifchanged %}{{ t }}{% endifchanged %} #当t的内容与上次重复时,不显示出来   {%endfor%}   #也可以指定判断某个变量   {% ifchanged date.date %} {{ date.date }} {% endifchanged %}   #也可以添加{% else %}标签   {% ifchanged match.ballot_id %}   some   {% else %}   some   {% endifchanged %}   include   加载一个模板并且用当前的上下文内容渲染它。这标签能用来在一个模板中包含另一个模板,模板的名字可以是一个变量或者是字符串。   {% include "foo/bar.html" %}   模板名是相对于模板加载器的根目录的。字符串参数可以用./或者../开头。   此标签的参数也可以指定一个拥有render()方法渲染内容的Template对象。   #也可以在标签中用with指定参数   {% include "name_snippet.html" with person="Jane" greeting="Hello" %}   #可以指定字段only来指定只接受include内的参数来渲染   {% include "name_snippet.html" with greeting="Hi" only %}   load   用于装载自定义的标签或者过滤器的库   lorem   用法:   {% lorem [count] [method] [random] %}   count:用来指定要生成的段落或者单词的数目(默认为1)   method:w代表单词,p代表html段落,b代表纯文本段落   用来生成测试文本   now   用于格式化显示时间   It is {% now "jS F Y H:i" %} #可以使用反斜杠进行转义   #也可以将输出的字符串作为变量储存下来   {% now "Y" as current_year %}   regroup   ?   resetcycle   重置cycle的计数   #也可以指定重置的cycle标签   {% cycle "one" "two" as one %}   {% cycle "one" "two" as two %}   {% resetcycle one %}   spaceless   清除html标签直接的空白符号(只删除标签之间的,标签和文本之间的不删除)   {% spaceless %}   Foo      {% endspaceless %}   templatetag   用法:   {% templatetag param %}   将参数进行转义   param:   openblock ----> {%   closeblock ----> %}   openvariable ----> {{   closevariable ----> }}   openbrace----> {   closebrace----> }   opencomment----> {#   closecomment----> #}   url   用给定的名称和可选参数返回结对路径引用,任何特殊的字符都将会用iri_to_uri()编码。   语法:   {% url "some-url-name" v1 v2 %}   #第一个参数是url的name,它可以是字符串或者变量   #额外的参数是可选的,将用作为url上的参数   #也可以使用关键词参数,但位置参数和关键词参数不要混合使用   {% url "some-url-name" arg1=v1 arg2=v2 %}   如果指定的url不存在,则将会抛出一个NoReverseMatch错误,这将导致服务器返回一个错误页面。   #一下调用将不会直接生成url,而是会保存在变量the_url中   {% url "some-url-name" arg arg2 as the_url %}   #可以使用标签{% block %}限定变量the_url作用的范围   verbatim   停止模板渲染引擎呈现此块标记的内容。   widthratio   按照比例计算数值   {% widthratio this_value max_value max_width %}   #可以使用as储存数值   with   简化复杂的变量调用   {% with total=business.employees.count %}   #这里可以直接使用total,total的作用域只存在标签体中   {% endwith %}   #可以指定更多的参数   {% with alpha=1 beta=2 %}   ...   {% endwith %}   过滤器:   内置过滤器:django.template.defaultfilters   过滤器改变变量的值和改变标签的参数   语法:   {{ django|title }} #将变量django内容里面的每个单词首字符转换为大写   可以向过滤器传递参数:   {{ my_date|date:"Y-m-d" }}   内建的过滤器:   add   #将参数加载变量value上   {{ value|add:"2" }}   #变量和参数也可以是其它的类型(例如string list)   addslashes   转义   {{ value|addslashes }}   #如果value是:I"m using Django   将输出:I"m using Django   capfirst   将值的第一个字母大写   center   {{ value|center:"15" }}   #将value居中在宽度为15   cut   {{ value|cut:param }}   #将value中的全部param去掉   date   按照给定的格式去格式化日期   详细   default   当值为False时,则输出默认参数   #如果值value为False,则输出nothing   {{ value|default:"nothing" }}   default_if_none   和default类似,不过仅在值为None时才输出默认值   dictsort   将列表中的字典按照给定的参数作为字段进行排序   [   {"name": "zed", "age": 19},   {"name": "amy", "age": 22},   {"name": "joe", "age": 31},   ]   参数为name   则输出:   [   {"name": "amy", "age": 22},   {"name": "joe", "age": 31},   {"name": "zed", "age": 19},   ]   或者是:   {{ value|dictsort:0 }} #参数应该输入int类型,而不是字符串类型   value:   [   ("a", "42"),   ("c", "string"),   ("b", "foo"),   ]   排序后:   [   ("a", "42"),   ("b", "foo"),   ("c", "string"),   ]   dictsortreversed   工作原理和上面一样,不过是倒序排序   pisibleby   #如果value能被参数"3"整除,则输出True,否则输出False   {{ value|pisibleby:"3" }}   escape   转义,在html中输出html标签的字符串表达   escapejs   ??   filesizeformat   {{ value|filesizeformat }} #将value转换为有利于理解的文件大小字符串表示   first   返回列表中的第一个元素   {{ value|first }}   floatformat   如果不带参数,则四舍五入到小数点后一位   如果带参数,则四舍五入保留参数大小的小数个数(n为参数大小)   如果参数为零,则不保留小数   如果参数为负数,则四舍五入保留参数绝对值大小的小数个数,如果小数点后全为零,则忽略小数   force_escape   类似于escape,此过滤器立即应用并返回一个新的转义字符串   get_digit   给定一个整数,返回请求的数字   {{ value|get_digit:"2" }}   #返回value的十位数字   #若参数为3,则返回百位数字   iriencode   将value转换为适合包含在URL中的字符串表达形式   join   用给定的字符串连接列表,返回最终字符串表达形式   类似python的str.join(list)   json_script   New in Django 2.1   安全地将Python对象输出为JSON,包装在   last   返回列表中最后的元素   {{ value|last }}   length   返回序列对象的长度,对于未知类型,则返回0   length_is   如果给定序列的长度等于传入的参数,则返回True,否则返回False   linebreaks   将换行符转换为   一个新行加上一个空行变成了段落换行符   linebreaksbr   将换行符转换为   linenumbers   显示文本的行数   one   two   three   转换为:   1. one   2. two   3. three   ljust   {{ value|ljust:"10" }}   #如果value是django,则输出 "Django "   lower   将给定的字符串全部转换为小写字符   make_list   将给定的字符串转换为列表   phone2numeric   将电话号码转换成数字输出   pluralize   应用于英文复数场景,参数可以定义输出的后缀   pprint   调试用??   random   随机输出给定的列表中的元素   {{ value|random }}   #如果value是["a","b","c"],则随机输出其中的一个   rjust   类似于ljust,不过对齐方式是向右   safe   标记内容,表示不用被转义   safeseq   类似于safe,但应用于列表中的每个参数   slice   给定一个列表,返回列表的切片对象   slugify   转换为ASCII。将空格转换为连字符。删除非字母数字、下划线或连字符的字符。转换为小写的。还可以去掉开头和结尾的空白。   "Joel is a slug" 转换为 "joel-is-a-slug"   stringformat   根据给定的参数格式化变量   {{ value|stringformat:"E" }}   #如果value为10,则输出1.000000E+01   striptags   将给定的字符串中的html的全部标签删除   time   格式化时间   {{ value|time:"H:i" }} #value为时间   timesince   {{ start|timesince:later }}   #代表自从start之后,到later过了多少时间   #相当于返回later-start   timeuntil   {{ start|timeuntil:before }}   #before为可选参数,代表在start之间的时间   #返回从bofore到start过了多少时间(start-before)   title   将给定的字符串中所有的单词的首字母转换为大写,其它字符转换为小写   truncatechars   缩短字符串长度为给定的参数,缩短后字符串带...后缀   {{ value|truncatechars:9 }}   #value="Joel is a slug"   #输出"Joel i..."   truncatechars_html   类似truncatechars,但忽略html标签,将标签里面的内容自动缩短。   {{ value|truncatechars_html:9 }}   #value="   Joel is a slug"   #输出"   Joel i..."   truncatewords   类似truncatechars,但以一个单词为单位计算。   truncatewords_html   类似truncatechars_html,但以一个单词为单位计算。   unordered_list   根据给定的嵌套的list自动生成嵌套的列表   upper   将给定的字符串中的字母全部转换为大写字母   urlencode   转义URL中使用的值   urlize   将给定的url地址转换为html中可点击的链接   urlizetrunc   类似于urlize和truncatechars的结合体   wordcount   返回给定字符串中单词的数量   wordwrap   指定每行的长度   {{ value|wordwrap:5 }}   #如果value为"Joel is a slug"   #则输出   Joel   is a   slug   yesno   将给定值的布尔值转换为自定义的参数   {{ value|yesno:"yeah,no,maybe" }}   #如果value为True,则输出yeah   #如果为False,则输出no   #如果为None,则输出maybe(此参数可省略,如果省略,则默认输出False对应的结果)

6000辆战车7。6万名登陆士兵,美专家中国拥有世界最强两栖部队众所周知,在两栖登陆作战中,能够随同抢滩的装甲战车,一直都被认为是海军陆战队士兵登陆后,能够向纵深快速推进,以及降低抢滩登陆作战伤亡的最重要装备之一。而预想中可能发生的台海冲突,由辽宁大学新校长,来自北大8月13日,辽宁大学宣布,余淼杰同志任辽宁大学党委委员常委副书记,校长(试用期一年)潘一山同志不再担任辽宁大学校长职务。值得注意的是,这位新校长来自北京大学,为经济学博士教育界潮汕民间故事老汉救蟒蛇,老汉上坟时蟒蛇撞向墓碑,它说小心你女婿唐朝时有位刘老汉,他住在一个叫南溪村的地方,年轻的时候他是个屠夫,因为女儿的缘故只能改行卖起西瓜。刘老汉安分守己,他膝下只有一个女儿,叫做阿玉。阿玉心灵手巧,是这十里八村公认的好姑(孙悟空唐僧)的信敬爱的师父您好!我是一直令您头痛的大徒弟孙悟空,很高兴师父还记得我。师父,我孙悟空在此先向您一拜,我自从当了斗战胜佛后,不知道是不是可以用光阴似箭,日月如梭来形容,已1923年有余美媒中国在超级大国垮掉前,获得3架先进战机,并以此赶超美俄对于解放军美国媒体的态度可以说是又爱又恨,一方面,美国媒体需要不断鼓吹所谓的中国威胁论来为美军争取相应的军费。另一方面,他们又想证明美军比解放军更加强大。因此,美国媒体的涉华军事报世界五大国2022年上半年GDP成绩,中美差距扩大,日本只有我国142022年注定不寻常呀,几个世界大国都出现了不小状况。美国通胀难以控制,并伴随着货币收紧美元升值中国大陆疫情再起,且影响严重的还是重要经济区域日本因各种因素所致,经济仍在下行。加之美媒中国在超级大国垮台前获得3架顶级战机,成为赶美超俄契机美媒军事评论报道称,在上世纪90年代,苏联这个超级大国解体前夕,和中国空军关键的转折窗口期中,中国成功的从苏联手中获得了三架顶级战机,成为中国空中力量赶美超俄的契机。苏联解体前夕,起底顽固台独分子柯建铭家族在大陆的投资产业,柯家金脉即将断绝近年来,台湾海峡的不确定性因素正在逐渐增加,以至于如今的台海上空战云密布,波涛之间炮声隆隆,而罪魁祸首就是台湾岛内的顽固台独分子。2021年,大陆将苏贞昌吴钊燮游锡堃等人列为顽固台父亲获救了,小孩没有了四川彭州山洪中被困在河中间大石头上抱紧儿子的父亲,在无望的最后关头,曾试图将儿子抛上岸,但失败了,二人都被冲走。据救援队长说,父亲获救了,小孩没有了!这个结局真是让人揪心。我觉得当真假难辨,她花了800万整容成迪丽热巴吉娜,比电视剧还刺激还记得花了800万生生把自己整成FBB的那位何姐么?这位何姐,从15年起,前后整整花800万,历时8年,才总算把自己整成了真假难辨的FBB。三十六线演艺事业,从此迎来了春天,找上门39岁于明加做运动!穿露腰背心大秀身材,凹凸有致曲线完美太吸睛8月16日,资深女星于明加更新了个人社交账号的动态,立马引起了网友们的关注。曝光的画面中,于明加将头发扎了起来,化着浓妆,妆发相当精致。她穿着灰色露腰背心出镜,大秀保养得宜的好身材
预算在2000元左右,可以看看这几款手机,性价比很不错1真我GTNeo3搭载天玑8100处理器,采用台积电5nm的制程工艺,拥有旗舰级别性能以及超低功耗,能效比非常优秀,妥妥的神U表现,同时还搭载一块独立显示芯片,让游戏体验变得更加丝今年不流行穿短裤了,这才是阔腿裤最正确的打开方式,温暖又显瘦虽说初秋选择穿短裤的话会秀出我们的大长腿,但并不意味着我们每个人的大长腿都有女明星般的筷子腿的。而且只要大家稍不注意的话,其实我们很快就会因此从而暴露出自己的身材不足之处,甚至反倒人民币贬值影响股市下跌?没那么简单,高层在下一盘大棋一方面人民币持续贬值,另一方面是近期股市震荡下跌。股市从七月初3424点跌到现在3200点左右。而这一次人民币贬值并没有被干预,而前几次贬值都得到了干预,这是为什么呢?到底人民币贬官宣!绿军新援半月板撕裂,爵士与骑士探讨交易,勇士兜售库明加2022年美洲男子篮球锦标赛即将开打,美国男篮近日公布了最近一期12人大名单,其中包括很多大家熟悉的前NBA球员,名单具体明细为,诺里斯科尔麦考米克斯奇塔姆安东尼兰姆帕戈斯沃德戴维曝苹果正推进ProjectIrvine台前调度进化版,或明年推出IT之家8月31日消息,在苹果6月7日的WWDC2022大会中,苹果发布了iPadOS16,并展示了其为M1iPad更新的台前调度(StageManager)功能。今日,有消息称苹购机直降4000元,iPhone13Pro到手价仅3999元文周澄澄责编吕东兴总编唐迪选靓号,购新机,iPhone13Pro解锁超能力,超亮眼显示屏,超耐用设计拍出视频大片超轻松搭载超高速芯片还有超劲续航大提升,感兴趣的小伙伴点击链接了解一天玑至尊版官宣我变强了,这次真要干翻骁龙一核有难,九核围观,这算是当年网友的一个恶搞,说的是多年前联发科的x20处理器,它是一个十核处理器,看似很强,可惜性能负载不均衡,个别CPU超负荷,其它却未怎么使用,或关闭(锁核)5000mAh大电池80W骁龙870,跌至1689元,这才是千元性价比之王随着智能手机竞争越发激烈,手机厂商为了吸引消费者,往往推出了性价比极高的千元机,以往年轻人不大喜欢千元机,因为性能不强,日常使用都不够用,为了让消费者享受到更好的性能体验,雷军以往前巴萨球员普伊奇首发送助攻!助球队获胜北京时间8月20日8点10分,美职联常规赛洛杉矶银河客战新英格兰革命,巴萨旧将普伊奇在美职联首发出战。由于不在巴萨计划中,普伊奇在今夏转战美职联加盟洛杉矶银河,双方签约到了2025张继科现身网红直播间,出场费曝光后引吐槽,球迷呼吁其保持理智中国乒坛有许多优秀的运动员,张继科就是其中一位。作为一位明星级别的球员,他球风很犀利,但同时张弛有度,巅峰时期打遍天下无敌手,被球迷们称之为藏獒。张继科拿到过世界冠军奥运冠军,是乒两连败!中国队有进步,但还不够北京时间8月29日,2022年男排世锦赛在斯洛文尼亚继续进行。在这个比赛日当中,中国男排迎来了小组赛第二个对手加拿大队,对手目前世界排名第17位,尽管算不上顶级强队,但是和中国队相