前言 本文是对Heo博主写的Butterfly魔改:动态分类条,可以根据页面变化而改变的分类列表展示方式文章的补充,增加了动态标签条,并且可以自动获取全站分类和标签名称。 2. 预览 3....=getarray_bar("category") a.category-bar-more(href="/categories/") 更多 其次是标签条,在themes/butterfly/layout.../includes/处新建文件tagBar.pug,因为样式一样,所以没有更改id和class名称。...helpers/中创建get_arrays.js hexo.extend.helper.register('getarray_bar', function (types) { if (!...在标签页引用:找到theme/butterfly/layout/tag.pug extends includes/layout.pug block content if theme.tag_ui
是一种通过缩进(表示标签间的嵌套关系)的方式来编写代码的过程,在编译的过程中,不需要考虑标签是否闭合的问题。可以加快写代码速度,也为代码复用提供了便捷。...优点: 1、无需结束标签 2、强制缩进 3、代码复用和维护 4、标签写法与CSS相同 搭建pug环境: 1、下载node.js和 npm 2、下载 pug , 命令:npm install pug-cli...'; a(href='/' + url) 链接 | | - url = 'https://example.com/' a(href=url) 另一个链接 等价于--> 链接 另一个链接 布尔值属性: input(type='checkbox' checked) | | input(type...#main-link 等价于--> 考虑到使用 div 作为标签名这种行为实在是太常见了,所以如果您省略掉标签名称的话,它就是默认值: #content
前言 本文将介绍如何在首页侧边栏添加文章合集板块。可以提供一些重要文章的展示。...=item.url)=item.name 在\themes\butterfly\layout\includes\widget\index.pug文件中page项添加如下代码: !...=partial('includes/widget/card_collections', {}, {cache: true}) image.png 在\source\_data目录下(如没有_data需自行创建...并写入如下代码: collections: - name: 名称1 url: '文章1url' - name: 名称2 url: '文章2url' 注意:url为文章渲染后的完整链接...因为这次“jsDelivr域名遭到DNS污染”导致很多依赖都down了,又考虑之前站点加载过慢,因此整体大更新了一波,去掉了很多样式和动效,尽量归于默认。
page()传递的是一个无效的页码时抛出 PageNotAnInteger:当向page()传递的不是一个整数时抛出 EmptyPage:当向page()传递一个有效值,但是该页面时没有数据时抛出 二、...Page对象 创建对象 Paginator对象的page()方法返回得到Page对象(不需要手动创建) 属性 object_list:当前页上所有的数据(对象)列表 number:当前页的页码值...paginator:当前page对象关联的paginator对象 方法 has_next: 判断是否有下一页,如果有返回True has_previous:判断是否有上一页,如果有返回True...has_other_pages:判断是否有上一页或下一页,如果有返回True next_page_number:返回下s一页的页码,如果下一页不存在抛出InvalidPage异常 previous_page_number...:返回上一页的页码,如果上一页不存在抛出InvalidPage异常 len():返回当前页的数据(对象)个数 三、示例 路由配置 path(r'^stupage
点击 “下一页” ,查看它的URL链接,会发现下面的规律: 第1页URL:https://movie.douban.com/top250?...) 必须要取超过停止数据225,因为255不包含在其中,25是它的公差,程序表示为: 接下来使用python的requests库去代替浏览器请求网页的服务器,返回HTML文件,提取并保存信息,再生成下一页的链接...每一个链接都是在标签内的,通常放在 src=" " 或者 href=" " 之中,如 xpath为: //*[@id="content"]/div/div[1]/ol/li[1]/div/div[2...]/div[1]/a 提取链接时,需要在复制到的xpath后面加上 /@href , 指定提取链接。...这个网页中电影的星级没有用几颗星的文本表示,而是标签表示的,如: 所以只需要取出 class=" " 中的内容就可以得到星级了,复制它的xpath,和提取链接的方法一样,在后面加上 /@class
我们的投票应用中,需要下列几个视图: • 问题索引页——展示最近的几个投票问题。 • 问题详情页——展示某个投票的问题和不带结果的选项列表。 • 问题结果页——展示某个投票的结果。...用你的浏览器访问 "/polls/" ,你将会看见一个无序列表,列出了我们在 教程第 2 部分 中添加的投票问题,链接指向这个投票的详情页。...如果列表为空的话会抛出 Http404 异常。 使用模板系统 回过头去看看我们的detail()视图。它向模板传递了上下文变量 question 。...去除模板中的硬编码 URL 还记得吗,我们在polls/index.html里编写投票链接时,链接是硬编码的 {{ question.question_text...我们在polls.urls的url()函数中通过name参数为URL定义了名字,你可以使用 {% url %} 标签代替硬编码URL: <a href="{% url 'detail' question.id
3.2.0 以下版本 3.2.0 以上版本 3.2.0 以下版本的配置只支持 留空,true 和 false - 显示默认的颜色 img链接 - 显示所配置的图片 配置的值 效果 | 留空|...显示默认的top_img(如有),否则显示默认的颜色 (文章页top_img留空的话,会显示 cover 的值)| | img链接| 图片的链接,显示所配置的图片| | 颜色( HEX值 - #0000FF...如果有文章(例如:转载文章)不需要显示版权,可以在文章页Front-matter中单独设置。...# footer是否显示图片背景(与top_img一致) footer_bg: true 配置的值 效果 留空/false 显示默认的颜色 img链接 图片的链接,显示所配置的图片 颜色: HEX值...如想添加额外的 js/css/meta 等等东西,可以在 Inject 里添加,head(标签之前), bottom(标签之前)。
利用 如果,你的网站上有一个链接,使用了 target="_blank",那么一旦用户点击这个链接并进入一个新的标签,新标签中的页面如果存在恶意代码,就可以将你的网站直接导航到一个虚假网站。... 2.用户点击了这个链接,在新的标签页打开了这个网站。...上面的攻击步骤是在跨域的情况下的,在跨域情况下, opener 对象和 parent 一样,是受到限制的,仅提供非常有限的属性访问,并且在这仅有的几个属性中,大部分也都是不允许访问的(访问会直接抛出 DOMException...的传递,仍然不能阻止原标签被恶意跳转。...而如果在链接中加入了 noopener,则此时两个标签页将会互不干扰,使得原页面的性能不会受到新页面的影响。
是一种通过缩进(表示标签间的嵌套关系)的方式来编写代码的过程,在编译的过程中,不需要考虑标签是否闭合的问题。可以加快写代码速度,也为代码复用提供了便捷。 2....标签:HTML 代码的树状结构 2. 属性:紧跟着标签写在括号里,用,隔开(不加逗号也是允许的),class和id可以直接写在元素后面,例如#pug.pug表示的就是一个div标签 3....直接在标签后面加文本,注意文本和标签之间要有空格 b. 在标签的下一行,对每一行内容前面加管道符号(|) c. 大的纯文本块只需要在标签后面紧接一个点 . (在标签和点之间不要有空格)。...条件循环:if else 判断 和 case 判断 7. mixin混入 是一种允许您在 Pug 中重复使用一整个代码块的方法。...)取到特定的属性,第二种可以通过p&attributes(attributes)取到全部的属性)、传递不确定数量的参数(用…items 表示) 8. include包含 解决的是文件和文件之间,文件和区块之间代码复用的问题
()传入一个不是整数的值时抛出 EmptyPage:当向page()提供一个有效值,但是那个页面上没有任何对象时抛出 Page对象 负责具体某一页的数据的管理 创建对象 Paginator 对象的 page...():如果有上一页或下一页返回 True next_page_number ():返回下一页的页码,如果下一页不存在,抛出 InvalidPage 异常 previous_page_number ()...:返回上一页的页码,如果上一页不存在,抛出 InvalidPage 异常 len ():返回当前页面对象的个数 说明: Page 对象是可迭代对象,可以用 for 语句来 访问当前页面中的每个对象 参考文档...page={{ page.next_page_number }}">下一页 {% else %} 下一页 {% endif %} ...它将被浏览器用于“另存为…”对话框 对于CSV文件中的每一行,调用writer.writerow,传递一个可迭代对象,如列表或元组。
除此之外,Page 对象还拥有几个常用的函数: has_next(): 判断是否还有下一页,有的话返回True。 has_previous():判断是否还有上一页,有的话返回 True。...has_other_pages():判断是否上一页或下一页,有的话返回True。 next_page_number(): 返回下一页的页码。如果下一页不存在,抛出InvalidPage 异常。...previous_page_number():返回上一页的页码。如果上一页不存在,抛出InvalidPage 异常。...3 运用 下面是自己编写的 demo 程序,介绍 Paginator 和 Page 如何一起使用。...当拿到视图传递过来的 books(books 是一个 Page 对象), 就在 for 循环中打印数据。最后使用 books 根据页面情况展示上一页按钮,当前页数,总页数,下一页按钮。
问题详情页——展示某个投票的问题和不带结果的选项列表。 问题结果页——展示某个投票的结果。 投票处理器——用于响应用户为某个问题的特定选项投票的操作。...还有,为什么模型 API 不直接抛出 ObjectDoesNotExist 而是抛出 Http404 呢? 因为这样做会增加模型层和视图层的耦合性。...URL 在 polls/index.html 里编写投票链接时,链接是硬编码的: {{ question.question_text...}} 问题在于,硬编码和强耦合的链接,对于一个包含很多应用的项目来说,修改起来是十分困难的。...然而,因为你在 polls.urls 的 url() 函数中通过 name 参数为 URL 定义了名字,你可以使用 {% url %} 标签代替它: <a href="{% url 'detail
所以在parse方法中,我们可以直接对response变量包含的内容进行解析,比如浏览请求结果的网页源代码,或者进一步分析源代码内容,或者找出结果中的链接而得到下一个请求。...我们可以看到网页中既有我们想要的结果,又有下一页的链接,这两部分内容我们都要进行处理。 首先看看网页结构,如下图所示。...这里我们传递两个参数——url和callback,这两个参数的说明如下。 url:它是请求链接。 callback:它是回调函数。...接下来我们要做的就是利用选择器得到下一页链接并生成请求,在parse()方法后追加如下的代码: next = response.css('.pager .next a::attr(href)').extract_first...,即要获取a超链接中的href属性。
description" content="关于你的博客的介绍" /> 设置关键词 翻页按钮设置 一般博客有好几页文章,所以有下一页...nofollow值 顾名思义,nofollow 是HTML页面中a标签的属性值。...这个标签的意义是告诉搜索引擎"不要追踪此网页上的链接或不要追踪此特定链接"。这个一般用在评论区,防止爬虫追踪评论区里面的恶意链接,对网站造成影响。...但是某些博主可能会在友情链接标签里面动手脚,大家和别人交换友情链接的时候要注意,例子: 原本正常的友情链接应该是这样: Tim's Blog 动手脚后,告诉爬虫不要追踪此链接,同时也阻止了权重的传递,这样友情链接的作用就微乎其微了: <a target="_blank" href="http://www.huangbowei.com
license: 自定义许可协议名称 license_url: 自定义许可协议链接 合并CSS文件 将自定义CSS并入主体CSS中,用以节省请求次数,以此加快访问速度 但是如果是单页CSS就没必要了...@import '文件夹名/*.css' Hexo-Butterfly添加磁吸效果分类 主题文档\layout\index.pug extends includes/layout.pug block...enable: true column: odd # 显示列数,odd:3列 | even:4列 row: 2 #显示行数,默认两行,超过行数切换为滚动显示 descr: - 这里写自己标签的备注...(图片与博客的相对路径或者去掉协议头的绝对路径) timeline: 日期,格式:'年-月-日' link: 置顶文章链接,站内文章建议填相对链接 title: 置顶文章标题 description...效果图预览: 引入Symbol图标 首先引入fonticon图标库的js链接,引入方式可参考Hexo-Butterfly主题修改记录【引入第三方图标库】部分 菜单图标 butterfly\layout
所以在parse方法中,我们可以直接对response包含的内容进行解析,比如看看请求结果的网页源代码,或者进一步分析源代码里面包含什么,或者找出结果中的链接进一步得到下一个请求。...观察网站,我们可以看到网页中既有我们想要的结果,又有下一页的链接,所以两部分我们都要进行处理。...好,接下来我们要做的就是利用选择器得到下一页链接并生成请求,在parse方法后追加下面的代码。...scrapy.Request(url=url, callback=self.parse) 第一句代码是通过CSS选择器获取下一个页面的链接,需要获取超链接中的href属性,在这里用到了::attr...(href)操作,通过::attr加属性名称我们可以获取属性的值。
文章目录 1.前后台的数据传递 2.与数据库交互并返回数据的几种比较常用的方法 3.一个表单对应多个按钮解决方案 4.HTML中的表单控件及操作 5.消息框架 message使用 6.日期和时间DateField...-这个是django中的一个标签,用于防止恶意攻击使用,如果不加入这个标签,会遇到不能提交的问题,处理麻烦一点,建议加上。...datetime()、date()、time()三中对象,这三个field有着相同的参数auto_now和auto_now_add。...(1,10),(1,200) # page: page对象(是否具有下一页;是否有上一页;) current_page = request.GET.get('p') #当前页码...p={{posts.next_page_number}}">下一页 {% else %} 下一页 {%endif%} {{posts.number
以上标签首页不能调用,分类页和文章页都可以。...一般都这么用 当前位置: 首页 > {catpos($catid)} 文章页的上一篇和下一篇代码 上一篇...:{$previous_page[title]} 下一篇:{$next_page...$catid}首页{/if} {if $child}栏目首页{/if} {if $parentid}栏目列表页{/if} {if $catname}栏目首页和栏目列表页{/if} {if $id}内容页...catid的值。
例如:普通网页中点击 a标签链接。vue项目中点击router-link标签链接都属于声明式导航。...:/path/:参数变量传递的方式:在path后面跟上对应的值传递后形成的路径:/path/参数值// params传参数————类似post,浏览器地址栏中不显示参数<router-link to="...参数名获取<em>传递</em>的<em>值</em>。...Userid 获取参数<em>传递</em>的<em>值</em>番外:Vue-router跳转<em>和</em>location.<em>href</em>有什么区别使用 location.<em>href</em>= /url 来跳转,简单方便,但是刷新了页面;使用 history.pushState...属性的属性<em>值</em>_self或是_blank来选择是当前页面打开<em>链接</em>并加载组件还是打开新的<em>标签</em><em>页</em>并加载组件。
max_length参数是可选的,用于指定最多显示的页面按钮数量,默认值是10。 函数的逻辑是根据传入的context中的分页信息来生成适当的页面按钮范围。...我的这个标签函数的思路就很简单,我只需要关注最左边和最右边的页码是多少就行,然后只需要保证几个原则就行:第一,最左边最小值为1,第二最右边最大值为总页码数,第三,除非总页码数少于要显示的页码数,不然必须显示规定的长度...="{{ new_next_page_path }}">下一页 {% endif %} 我这个分页模板很容易理解,就是判断有没有上一页和下一页去显示上下页按钮...page={{ page }}就会导致设置不生效,所以我这里定义了一个标签函数来处理当前的地址,大概用途就是只替换链接中的分页参数,比如这里是page,这个参数也是可以根据实际来设置的。...总结 这篇博客主要介绍了作者如何在Django网站中实现了一个类似百度搜索页面的分页效果,并提供了相关代码和思路。
领取专属 10元无门槛券
手把手带您无忧上云