2017-01-14 76 views
0

由於不重寫相同的API的原因。我想繼承從已經創建了一個GET方法MethodView忽略login_required裝飾如何繼承一個沒有裝飾器的瓶子MethodView類?

class DoStuffA(MethodView): 
    decorators = [login_required] 
    def get(self): 
     return jsonify({"status":"ok"}) 

api.add_url_rule('/dostufa', view_func=DoStuffA.as_view("dostuffa"), methods=['GET']) 

class DoStuffB(DoStuffA): 
    pass 

api.add_url_rule('/dostuffb', view_func=DoStuffB.as_view("dostuffb"), methods=['GET']) 

如果我做一個GET請求/dostuffb

  1. 是否需要進行身份驗證?

  2. 是我繼承的語法是否正確?

回答

2

僅當調用View.as_view()方法時才應用View.decorators列表。如果你不想在你的子類可以應用於任何裝飾做什麼,只是重寫屬性有一個空序列:

class DoStuffB(DoStuffA): 
    decorators =() # empty tuple 

現在DoStuffB.as_view()會發現空的元組,而不是繼承DoStuffA.decorators列表,並且不應用裝飾。

+0

工作!謝謝 –