模板

模板是 CubicWeb 查看系统。如中所示 发现可能的视图 ,有两种视图:模板表和非模板表。

非模板化视图

非模板化视图是独立的。它们负责所有细节,如设置适当的内容类型(或mime类型)、适当的文档头、名称空间等。示例是纯XML视图,如RSS或语义Web视图。 (SIOC, DOAPFOAFLinked Data 等),以及生成二进制文件(PDF、Excel文件等)的视图。

要注意视图不是可模板化的,只需设置视图的class属性 templatableFalse .在这种情况下,它应该设置 content_type 类属性设置为正确的mime类型。默认情况下,它是text/xhtml。此外,如果视图生成二进制文件,则必须设置视图的class属性 binaryTrue 也是。

模板化视图

可模板化视图与这些烦人的细节无关。他们把它留给模板。相反,模板的主要工作是:

  • 设置正确的文档标题和内容类型

  • 定义文档的总体布局

  • 在文档的各个部分调用适当的视图

看看 cubicweb.web.views.basetemplates 您将发现用于为应用程序生成(x)HTML的基本模板。最重要的模板是 TheMainTemplate .

TheMainTemplate

布局和截面

页面的组成如下图所示:

../../../_images/main_template.png

各部分发送特定视图:

  • header :头的呈现委托给 htmlheader 视图,其默认实现可以在 basetemplates.py 做以下事情:

    • 如果有腹股沟就注射。

    • 注入全局样式表和javascript资源

    • 调用并显示指向RSS组件的链接(如果有)

    它还设置页面标题,并填充 header 带有顶级组件的部分,使用 header 视图,其中:

    • 尝试显示徽标、应用程序名称和 breadcrumbs

    • 提供登录状态区域

    • 提供登录框(默认隐藏)

  • left column :这将填充与 left 上下文(也有一个正确的列,但由于可用性差,现在很少使用)

  • contentcol :这是中央列;它由以下内容填充:

    • 这个 rqlinput 视图(默认隐藏)

    • 这个 applmessages 成分

    • 这个 contentheader 视图,该视图依次分派具有 navtop 上下文(用于在实现IPrevNext接口的实体之间导航)

    • 作为模板的输入提供的视图 call 方法,也处理分页问题

    • 这个 contentfooter

  • footer :添加所有页脚操作

注解

视图对象如何和为什么被提供给主模板在 出版商 章。

配置主模板

您可以重载 TheMainTemplate 为了满足你的需要。还有一些属性和方法可以在视图上定义以修改基本模板行为:

  • paginable :如果结果集大于可配置的大小,则默认情况下结果页将分页。可以将此属性设置为 False 为了避免这种情况。

  • binary: boolean flag telling if the view generates some text or a binary stream. Default to False. When view generates text argument given to self.w must be a unicode string, encoded string otherwise.

  • content_type ,视图的内容类型,默认为“text/xhtml”

  • templatable ,布尔标志,指示是否应直接返回视图的内容(当 False )或包含在主模板布局中(包括标题、框等)。

  • page_title() ,方法,该方法应返回将在HTML标题中设置为页面标题的标题。

  • html_headers() ,方法,该方法应返回要包含HTML头的HTML头列表。

在构建URL或在req.form中设置这些参数时,还可以修改页面主模板的某些方面:

  • __notemplate ,如果存在(无论分配的值如何),则只返回内容视图

  • __force_display ,如果存在且其值不为空,则不分页要显示的实体数(例如,与视图的效果相似 paginable 上述属性。

  • __method ,如果要呈现的结果集仅包含一个实体,并且设置了此参数,则在执行经典方法(通过上面描述的步骤1和2)之前,它指的是通过将表单参数字典传递给实体来调用该实体的方法。

  • vtitle ,要设置为内容的标题

其他模板

还有以下其他标准模板:

  • cubicweb.web.views.basetemplates.LogInTemplate

  • cubicweb.web.views.basetemplates.LogOutTemplate

  • cubicweb.web.views.basetemplates.ErrorTemplate 专业 TheMainTemplate 在主模板计算过程中发生错误时,执行正确的最终用户输出(这是一个回退视图)。