posts 是一个比较特殊的 Namespace,本质上是 get_data 函数获得的数据,为了便于实现
博客
,单独把 posts 作为一个独立的 Namespace。
posts
作为一个 namespace 存在之外,也可以直接被调用。示例:
for post in posts
h2= post.title
.content= post.content
此时返回的数据是 post
类型的 records,并且是按照时间倒序的。另外,视具体的 URL, posts
对应的含义如下:
/category/
开始,则对应当前路径下的目录的子文章列表;
/tags/
或/tag/
开始,则以其Tag 对应的文章列表。
Posts 作为一个列表,里面是由单个的 post 组成的,如果访问 posts.post
或者 post
的时候,自动回尝试根据当前页面的 URL 去匹配一个 post
类型的 record。
作用: 获得最近发布的文章列表,该函数调用不会产生分页对象。
返回值类型: list
接收参数: <limit>
示例:
recent_posts = posts.get_recent(10)
recent_posts = posts.get_recent(limit=10)
同 get_recent
。
作用: 可以根据文章作者定义的文章 tag 获得文章列表,不会产生分页对象,返回记录数最多不超过 500。
返回值类型: list
接收参数: <tag, sort_by='-date'>
作用: 获得单篇日志
接收参数: path or url
返回类型: post or None
示例:
my_post = posts.get_one(path="hello.md")
my_post2 = posts.get_one(url="hello")
注意: 这里的url
是指文章作者指定的,而不是系统生成的(默认是以/post/开头)。
同 get_one
。
传入一个参数 tag
,获得对应的 tag 的 URL,一般用来构建 tag 页面的链接。
for tag in post.tags
a(href=posts.get_tag_url(tag))= tag
如果需要,也可以自己来构建 tag 对应的 URL。
作用: 可以进行全文检索,并获得对应的文章列表,并且会产生分页对象,名称为“search_posts”。
接受参数: <keywords, limit=30>
返回类型: list
示例:
my_posts = posts.search("名字")
my_posts2 = posts.search(keywords="Hello", limit=100)
注意: limit 可以不传入,默认为30,keywords 不可为空,否则返回一个空 list。
作用: 生成一个HTML的片段,将搜索的keyword作为GET的参数s
传递,一般默认可以实现网站的全文检索。
接收参数:
https://yourdomain.com/<base_url>?s=<keyword>
这个URL用的,默认是/
可以限定获取文章列表时,保证每页数最小值;接受一个整数型
参数。
作用: 一般用作获取文章的分类列表
返回数据类型: list
,每个元素为 Category 对象
规则对应: 获得根目录下1-2级的文件夹,并且每个文件夹需保证其所包含的文章数>=1
.
注意: 最多返回300条数据,且不产生分类对象;比较复杂的场景,可以自行使用d.get_data
构建数据获取的逻辑。
作用: 根据当前 URL,匹配到对应的文件夹目录
返回数据类型: Category对象 或 None
示例说明: 当前 url 为 /xxx/hello
, 忽略/xxx/
第一层,取后续的路径去匹配一个文件夹。
cat = posts.cateogry
// 如果有一个目录名为`hello`, 则 cat 是一个文件夹数据对象,反之则是 None 值
(按照文章日期,推算发表日期晚于当前文章的上下文对象的)下一篇文章
(按照文章日期,推算发表日期晚于当前文章的上下文对象的)上一篇文章
同 previous_one
。