假设我想使用自己创建的LoginRequiredMixin和UserPermissionMixin,并将它们应用于应用程序中的所有视图。这只是一个例子,我可能也有一些混音添加一些上下文或做其他事情
我可以手动执行,例如以下视图:
class MyCreateView(LoginRequiredMixin, UserPermissionMixin, CreateView)
但是,由于我有很多视图,并且可能有其他特定的视图混合,所以这会变得混乱并且难以管理
想到的一个解决方案是为泛型视图创建新类:
class DecoratedCreateView(LoginRequiredMixin, UserPermissionMixin, CreateView):
pass
class DecoratedDetailView(LoginRequiredMixin, UserPermissionMixin, DetailView):
pass
class DecoratedUpdateView(LoginRequiredMixin, UserPermissionMixin, UpdateView):
pass
class DecoratedDeleteView(LoginRequiredMixin, UserPermissionMixin, DeleteView):
pass
然后,使用这些作为我的通用视图:
class MyCreateView(DecoratedCreateView)
这是个好办法吗?我是否必须在上面的类中添加任何方法,还是将它们留空就可以按预期工作? 有没有其他方法可以实现这一点,也许在url.py中
你的方法很好。我在一些项目中这样做有点不同:
myapp/views/generic.py
myapp/views/base.py
它工作良好,没有太多的麻烦,并允许您轻松地跳过混合异常,如果需要的话
根据用例,另一种解决方案可能是使用middlewares或context processors
相关问题 更多 >
编程相关推荐