我在Django中具有以下结构:
class EmailView(View, ABC):
def post(self, request):
pass
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
.........
class Base(AccessMixin, EmailView, ABC):
.....
class ADTView(ABC):
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
.......
class BaseMixin(Base, SubscribeNewsletterView, ADTView, ABC):
def get_context_data(self, *args, **kwargs):
..............
class ItemListView(BaseMixin, ListView):
...............
如果EmailView
由Base
继承(例如),则不会调用get_context_data
中的方法ADTView
。
如果EmailView
没有被Base
继承:class Base(AccessMixin, ABC)
调用了get_context_data
中的方法ADTView
。
方法中的内容无关紧要(即使我获得了上下文,也没有修改并返回它),
我想要的是方法订单的执行:
AccessMixin, EmailView, ADTView, ListView
我想是因为ListView
是从View
继承而来的,但是在EmailView
中我使用了View
,因为我需要as_view
。基本上,我是使用Ajax通过URL调用EmailView
。
答案 0 :(得分:0)
实际上,Python MRO使用深度优先方法,您可以通过以下代码检查MRO
print(ItemListView.__mro__)