[英]how to use different decorator from parent class in child class in django?
我有 2 個基於 class 的視圖MyFirstView
和MySecondView
。 我希望這 2 個視圖使用彼此不同的裝飾器。 我已經在谷歌上搜索了將近一個小時的解決方案,但仍然找不到任何答案。 所以我在這里尋求幫助。
@method_decorator(my_first_decorator, name="dispatch")
class MyFirstView(UpdateView):
# some attributes
# some methods
@method_decorator(my_second_decorator, name="dispatch")
class MySecondView(MyFirstView):
# some attributes
我一直在嘗試為上面顯示的視圖提供不同的裝飾器,但由於某種原因MySecondView
仍在使用MyFirstView
的裝飾器。
我也試圖覆蓋 dispatch 方法但沒有成功。
class MyFirstView(UpdateView):
@method_decorator(my_first_decorator)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)
# some attributes
# some methods
class MySecondView(MyFirstView):
@method_decorator(my_second_decorator)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)
# some attributes
第二種方法似乎是正確的,但是您必須在 MRO 中跳過一個父級:
class MySecondView(MyFirstView):
@method_decorator(my_second_decorator)
def dispatch(self, *args, **kwargs):
return super(MyFirstView, self).dispatch(*args, **kwargs)
這樣, super
調用普通的未修飾的原始實現,而不是來自其直接 super class 的受污染的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.