Data

主要是获取一些(原始)数据的函数。 但实际上在一般模板的 API 调用中不会直接使用。
datad (缩写) 都可以用来调用 Data。

get_data

参数:

  • type:字符串, post、folder、file 之一,默认为 post
  • path:默认为/(相当于站点根目录), 限定查询数据的路径,比如path='docs/', 则表示仅查询docs/这个目录下的数据。
  • level: 所在 path 的深度,如level=1,表示仅查询到其子目录,level=2,则仅查询子目录的子目录
  • level_start: 全局的路径深度起始于,与 level 互斥
  • level_end: 全局的路径深度于,与 level 互斥
  • sort: 排序类型: '-date', 按时间倒序(默认值); 'date', 按时间正序; 'position', 按照自定义位置正序
  • limit: 一次取出多少条数据
  • page:取得第几页的数据,默认为1或者取URL中形如/URL/page/<page>作为page的参数
  • with_page:是否启用分页;如果为True(默认值),则limit将会被当做每页多少条
  • paginator_name: 分页标记值,当前URL内可能会产生多个分页对象,调用get_data时为新创建的分页对象指定名称
  • excludes:针对已经获取得到的 list 类型数据,进一步排除能对应到path的处理
  • status:指定 post 类型数据的 status,默认为 'public','all'则为全部status,也可以是一个list,获得多个 status 的合集
  • date_start :文档的时间(即date字段)大于某个时间(包括等于的情况)
  • date_end :文档的时间小于某个时间(包括等于的情况)

说明及注意事项:

  1. 参数传入按需即可,不是所有参数都需要传入的;
  2. 使用limit参数,会自动产生一个paginator(分页)的数据对象,如果使用limit的同时,也使用了page这个参数,则paginator对象不会产生
  3. get_data 目的为了获得一个文档list的,一定要设置 paginator_name, 这样在后续调用分页数据的时候,就不会产生分页逻辑、数据混乱;
  4. excludes: 比如excludes=['configs', 'hello']表示,如果获得的文档 list 中,排除 path 为cofnigshello的两个文档。其中比较特殊的一个值是_, 如果 exceluds 中有_,则表示排除所有path以_开头的文档(一般都是缓存类型的文件夹);
  5. level: 也支持[2,3]这样形式,表示查询所有2级以及3级的目录,不包含更深的路径,也不包含1级子目录;也接受>n 或者<n 类型的参数,比如>1,表示2级目录或以上;最终 level 会转为 level_start & level_end 两个参数。

get_paginator

作用: 获得一个 Painator 对象。
参数: <index_or_name=0>,参数类型为整数或者字符串
如果index_or_name是整数,表示获得当前页面的第几个分页对象(从0开始);如果是字符串,则是指定名字的分页对象(一般是指d.get_data这个函数中的paginator_name参数)。

get_record_by_url

获得指定 url 对应的 record,比如作为文章的一个 record,它是一个 Markdown 文档,并且在 metadata 中声明了 URL。

get_doc_by_url

get_record_by_url

get_reocrd_by_path

获得指定 path (不区分大小写) 对应的 record,跟 get_record_by_url 有些类似。

get_doc_by_path

get_record_by_path

get_doc

作用: 获得一个文件的原始数据对象

参数 参数类型 说明
path 字符串(必须) 文件路径
type 字符串 or None 如果指定了type,初步获得 doc 后也要校验 type,类型不匹配返回 None
as_context_doc True/False(默认) 如果获得了数据对象,并且这个数据对象会根据需要,成为上下文 doc

make_tree

作用: 将一个文档列表,根据各自 path (路径信息),自动归档,如果是 folder 类型的,则会有children这个属性。

sort_by_position

sort_by_position(records, reverse=False), 将一个 records 列表进行排序,根据 bucket 上 orders 的配置进行排序。reverse 如果是 True,则表示排序完成后再进行一次倒排。
最终返回的也是一个 records 列表。