出版商

发出HTTP请求时会发生什么?

故事以 CubicWebPublisher.main_publish 方法。我们在引导过程中不会占上风,因为它依赖于所使用的HTTP库。

主要出版物的作用:

  • 从路径中获取控制器ID和结果集(这实际上是委托给 urlpublisher 部件)

  • 然后选择控制器(如果不是,则视为授权失败并发出相应的信号)并调用

  • 然后返回正确的结果,在这种情况下,请求/连接对象发出 commit 并返回结果

  • 否则必须进行错误处理:

    • ValidationErrors 弹出并可能导致重定向到以前安排的URL或应用标准错误处理

    • HTTP 500错误 (Internal Server Error )已发布

现在,让我们转到控制器。里面有很多 cubicweb.web.views.basecontrollers .我们可以按照默认的方式 view 在上选择的控制器 view 路径。查看 控制器 有关控制器的更多信息,请参阅第章。

这个 View 控制器的入口点是 publish 方法。它执行以下操作:

  • 计算 main 要应用的视图,使用给定的结果集或从用户提供的RQL字符串生成一个结果集 (rqlvid 可以从url get参数强制执行),即:

    • 计算 vid 使用结果集和模式(请参见 cubicweb.web.views.vid_from_rset

    • 处理在此阶段可能发生的所有错误案例

  • 做一些缓存管理工作

  • 选择主模板(通常 TheMainTemplate ,见第章 模板

  • 用结果集和计算视图调用它。

接下来发生的事情实际上取决于模板和视图,但一般来说,这是渲染阶段。

CubicWebPublisher API