在我的一个项目Django应用程序中,我有一个自定义mixin,它修改了基于日期的对象的基于类的通用视图:
class MyCoolMixin(ArchiveIndexView):
"""
ArchiveIndexView mixin with my customizations
"""
allow_empty = True
make_object_list = True
date_field = 'pub_date'
# Pass in some custom request vars
def get(self, request, *args, **kwargs):
# Cool stuff here
# including getting
# my context data
return self.render_to_response(context)
class MyNewArchiveIndexView(MyCoolMixin, ArchiveIndexView):
pass
效果很好。事实上,我想在网站范围内应用它,而不仅仅是针对这个特定的应用程序。但是,在Django 1.4的项目布局中,我不确定基于类的基于类的泛型视图重写mixin应该存在于何处。在根views.py?
/path/to/myproject/myproject/views.py
然后,我只是在每个应用程序中导入修改后的通用视图,以确保它可用吗?
此外,在我的各种应用模型中,我有不同的日期字段(有时是 pub_date 或 start_date )。知道如何将其传递到mixin中,以便我可以覆盖通用视图 date_field 设置吗?
我正在寻找最佳实践,而我还没有看到一个新的基于类的通用视图+ mixins。
答案 0 :(得分:1)
你可以追逐补丁...但这不是一个“最佳实践”,它是一个黑客。
最佳做法是覆盖使用默认ArchiveIndexView的每个网址。我已经wrote about that in details也许它会有所帮助。