出版商¶
发出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字符串生成一个结果集 (rql 和 vid 可以从url get参数强制执行),即:
计算 vid 使用结果集和模式(请参见 cubicweb.web.views.vid_from_rset )
处理在此阶段可能发生的所有错误案例
做一些缓存管理工作
选择主模板(通常 TheMainTemplate ,见第章 模板 )
用结果集和计算视图调用它。
接下来发生的事情实际上取决于模板和视图,但一般来说,这是渲染阶段。