写在前面

变量空间

Bitcron上对大多数的API,都进行了归类,与日志相关的,调用名字一般都已posts开头,这个posts就相当于变量空间。
每个不同的变量空间内,都有各自对应的属性、函数,这些属性或者最终函数运行获得结果,除了特别的数据对象外(比如分页对象),基本都是基本的数据类型,比如整数、字符串、浮点数 .etc.

模板API 与 数据对象

模板API更倾向于各个namespace内调用某个API从而获得数据,但是数据的具体类型,其属性、字段、函数则会在某个具体的数据对象中找到。
一般情况下,我们可以使用+d.get_data(*args, **kwargs)获得了数据,然后再根据数据类型对应的属性分别按需呈现。
自己站点内的某个文件夹,最终呈现出来的是一个数据对象(一般没有特别处理都为dict类型),这个数据对象即使类型不同,Image、Post、Category也好,都会有一个基本的BaseFile属性可以调用,不同类型的不同属性,则在对应的数据对象文档中可以找到。

本章文档的阅读方式

在本章模板 API中,主要针对不同变量空间namespace进行的说明,namespace也可以简单理解成是根据各个API进行的归类。
比如D & Date表示实际调用的时候是+d.xx+date.xx,实际调用类似+d.get_data(type="post"); 而 H & HTML 表示调用的方式为+h.xx+html.xx。同理可推,Posts这篇文档对应的调用方式+posts.xxx

注意事项

不要与默认的变量空间冲突

比如posts本身作为一个变量空间,但是在实际模板自定义的过程中,仍然可以对posts进行赋值。

posts = d.get_data(type="post")

类似上面这个代码就不是推荐的方式,因为posts这个原本作为变量空间的名称被当做一个普通变量被创建出来了。

模板代码空间 (codespace)

这个跟namespace有点不一样,特质mixin这种在模板内直接创建函数的行为。
mixin内的代码块在运行的时候,会有自己特定的一个空间,且与整个模板本身是相对独立的。
在这个代码空间内,不要使用默认的变量空间名作为变量名,以避免潜在的冲突。

尽量不要与常用变量名冲突

比如 postcategoryimage .etc 这些常见的变量,一般是模板数据对象对应的变量名,如果没有特别的必要,其它非常用的情况下,或者在其它代码片段空间中,尽量避开使用这些变量名。

分页对象混淆

d.get_data 中,凡是使用limit参数的,默认都会产生一个分页对象。
如果一个页面内多次调用这个函数(包括posts.categories, images.categories, posts, images 等默认变量默认会使用limit参数),就会产生多个分页对象。
比如页面内是文章列表+分类列表,如果没有在获得分类的时候,申明with_page=False的时候,那么当URL是/xxxx/page/2的时候,分类列表可能就是空列表了(因为已经是第二页数据)。