Min*_*ing 2 python django django-views
我与Rails一起使用的常见模式是控制器继承.我会将各种共享功能放入一个基本控制器,ApplicationController或者一些更多的域/关注特定的控制器,然后继承这个基本控制器来创建单独的控制器.
以下是我已经完成或已经看到各种Rails应用程序使用控制器继承的一些事情.
before_filter.常见用例包括身份验证/授权,请求验证和应用状态前置条件检查.以下是我已经完成或看过各种Django应用程序的一些事情.它们与上面的内容并不完全相符,而且还有一些差距,我不确定如何以干净的方式进行复制.
register.inclusion_tag或者其他类似的机制,但如果依赖于上下文的内容不能轻易地分解到单个组件中,这不是一个好的选择.在其他情况下,如果在任何地方使用附加上下文,可以使用中间件将期望状态注入到请求中,但是如果这应该被局部化到例如路线的某个子集,则这不是一个好的选择.但是这些都不像Rails控制器继承那样普遍,特别是,我不知道一个很好的解决方案,可以向基本模板提供额外的模板渲染上下文变量,类似于基本控制器上的实例变量.在Django中完成上述操作的推荐/惯用方法是什么?当然,Rails和Django有一些哲学和架构上的差异,所以"相当于X"并不是绝对的一对一.尽管如此,我希望能够对如何做这些常用的用例有所了解.
感谢您阅读此文本墙,并提前感谢您的见解!
PS,一个相关的问题和答案,涉及其中一些要点: Django相当于Rails application_controller
对于等效的django方法/函数:
存放某些类型的共享代码.
如果在视图中,使用基于类的视图; 因为它们就像普通的类一样,你可以继承它们并扩展它们(称为"mixins" - 因为你混合了你需要的功能).
参考:基于类的视图
将共享的前/后过滤器应用于请求.可能使用例如before_filter修改传入请求,修改传出响应或更改请求流.常见用例包括身份验证/授权,请求验证和应用状态前置条件检查.
有很多方法可以做到这一点; 取决于您希望实现的具体或一般:
为共享基本模板的部分状态/会话相关部分提供共享呈现上下文,例如,过滤器设置基本模板随后使用的一些实例变量.例如,站点具有共享标头,该标头显示当前用户和会话的某些特定于域的详细信息.
在django中,模板范围的功能由模板上下文处理器提供 ; 接收请求并返回字典(映射),然后在所有模板中可用.
| 归档时间: |
|
| 查看次数: |
365 次 |
| 最近记录: |