2017-01-14 8 views
0

Aus dem Grund nicht die gleiche API neu zu schreiben. Ich möchte eine Get-Methode von einem bereits erstellten MethodView und ignorieren die login_requiredDekorateur erben.Wie erben Sie eine MethodView Klasse ohne ihre Dekoratoren?

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']) 

Wenn ich eine GET-Anfrage an /dostuffb tun,

  1. Braucht es authentifiziert werden?

  2. Ist meine Vererbungssyntax korrekt?

Antwort

2

View.decorators Die Liste wird nur angewendet, wenn die View.as_view() Methode aufgerufen wird. Wenn Sie wollen keine Dekorateure in der Unterklasse angewendet werden, außer Kraft setzen nur das Attribut mit einer leeren Sequenz:

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

Jetzt DoStuffB.as_view() das leere Tupel finden, anstatt die geerbte DoStuffA.decorators Liste und keine Dekorateure angewendet werden .

+0

gearbeitet! Danke –

Verwandte Themen