一、打印方法: 一般打印web使用的是window.print()方法,当然也可使用vue-print 二、参数介绍: @page中一般设置打印的页头页脚打印方向等,示例: size:打印信息,打印纸张类型(A4)亦或控制打印方向,portrait: 纵向打印地, landscape: 横向。 @page{ } @media print 设置css中可以查看打印样式,示例: media print { } 可以将打印和页面的部分分离,需要注意的是需要打印的部分用“包含css样式再赋予函数,注意不是引号。然后抛出引入展示页面中,放在data的return {}下就行了。 三、分页: 分页的话使用的css样式一般是page-break-before与page-break-after这两个,对应的是打印前分页与打印后分页。 page-break-before 在元素前分页 page-break-after 在元素后分页 page-break-inside 元素内部分页 打印属性可以控制分页方向,可以设定4种设定值:auto、always、left和right。其中Auto是默认值,只有在有需要时,才需设定分页符号,以page-break-after示例: page-break-after:auto; 默认值 page-break-after:always; 新分页在元素下方 page-break-after:left; 新分页在元素下方 page-break-after:right; 新分页在元素下方 注意: 1.分页的元素必须是个可展示的块级元素,为求保险最好加上display: block; 2.元素内分页我试过,不怎么管用,所有还是用page-break-after比较好,要循环中分页的建议加个判断,然后再设置分页,再添加新的table元素,在该table元素中复制这个循环同样加上判断展示分页后的内容 3.建议分页元素放在两个table元素之间,分页后的table元素设置margin-top,如果不起左右就在元素属性style上设置 ———————————————— […]
1、数据准备 建表 drop table if exists score; create table score( id int not null primary key auto_increment, score decimal(10,2) not null ); 插入数据 insert into score (score) values (89.4); insert into score (score) values (82.5); insert into score (score) values (65); insert into […]
如下题匹配选项: (1) 设集合 $A=[-1,2], B=\left{y \mid y=x^{2}, x \in A\right}$, 则 $A\cap B=$ A. $[1,4]$ B. $[1,2]$ C. $[-1,0]$ D. $[0,2]$ 直接上代码: 格式化数据: 设置选项:
相信大家在看正则表达式语法的时候都会遇到下面几种:正向肯定,正向否定,反向肯定,反向否定 1、(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。 这是一个非获取匹配,该匹配不需要获取供以后使用。 例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”, 但不能匹配“Windows3.1”中的“Windows”。 预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索, 而不是从包含预查的字符之后开始。 2、(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。 这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。 例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”, 但不能匹配“Windows2000”中的“Windows”。 3、(?<=pattern) 反向肯定预查,与正向肯定预查类似,只是方向相反。 例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”, 但不能匹配“3.1Windows”中的“Windows”。 4、(?<!pattern) 反向否定预查,与正向否定预查类似,只是方向相反。 例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”, 但不能匹配“2000Windows”中的“Windows”。 我第一次看的时候就觉得很难理解,读了两遍好不容易理解了,但是一直用不上,直到工作需要…………… str = “111/;hkakdhaldladhl;gddhkshls;hhhh” 用 ; 切割字符串,要求切割结果是111/;hkakdhaldladhl gddhkshls hhhh,也就是第一个;前面有/,所以第一个;不分割,只分割后面的; 这其实就用到了反向否定,将python里面的split函数和正则表达式完美结合在一起,大家根据我的例子再去理解正(反)向否(肯)定匹配,肯定就更清晰了 python代码实现: import re str = “111/;hkakdhaldladhl;gddhkshls;hhhh” str_list = re.split(r”(?<!\/);”,str) print(str_list) 结果: […]
下载 从https://curl.haxx.se/ca/cacert.pem下载最新的cacert.pem 配置 php.ini配置找到curl.cainfo ,注释删除, 重启动
日常开发中,我们有时会碰到数据库已经存在,而需要我们去生成模型的情况。这种情况下,我们需要: Django中配置好数据库,确保连接得上这个已经存在的数据库 在cmd中运行命令,模型会生成在同一个文件中 python manage.py inspectdb > models.py 修改模型 3.1 修改模型名,根据需求修改模型的名称 3.2 将不同的表放进其所属的app中 3.3 处理好表之间的外键关系(主要针对跨app的表,如果外键在同一个模型文件中,则可以跳过该步骤),在外键前加上app_name 3.4 让Django能够管理该模型并进行迁移:将Meta下的managed = False删除 3.5 当有多对多关系的表时,删除模型中的中间表,使用ManyToManyField来实现多对多,注意要设置中间表的名称让其与数据库中的中间表名一致 3.6 切记不要修改模型中的表名称,与数据库不一致的话会导致找不到表的错误 运行 python manage.py makemigrations 运行 python manage.py migrate –fake-initial 其中,在修改模型的时候,重点是需要分析好表与表之间的关系,只要能够弄清楚表与表之间的关系,那么修改模型会轻松很多
处理Python关于Dict的错误KeyError的办法挺多,不过就记下了2个: 方法一:使用setdefault()设置默认值,如 data.setdefault(‘error’, 0) 方法二:导入collections,使用defaultdict方法 data = collections.defaultdict(list, data)
本文转自:https://www.yiichina.com/tutorial/1405 官方文档:http://www.yiichina.com/doc/guide/2.0/db-query-builder 文章涉及where、 addParams 、filterWhere 、andWhere、orWhere、 andFilterWhere()、 orFilterWhere()、andFilterCompare()但是格式是一样的 字符串和哈希格式很好理解,我们来看看操作符格式,因为操作符格式可以组成相对复杂的查询语句最简单的就是官方给的例子 操作符格式 第一个参数是操作符操作符包括and、or、 like、in、 between等第二个第三个都是操作数 $query->andWhere(new Expression(‘FIND_IN_SET(‘1,size’)’));+生成的语句… WHERE id=1 AND FIND_IN_SET(1, size)//size的值:1,2,3,4,5