2017-12-22 13 views
0

Wie kombinieren Dekoratoren, die Parameter nehmen?Flask - benutzerdefinierte Route Dekorateur

Zur Zeit habe ich:

@app.route('/create/<id>', methods=['POST']) 
@requiresAdmin 
def create_room(id): 
    pass 

@app.route('/join/<id>') 
@requiresAdmin 
def join_room(id): 
    pass 

Ich mag würde haben:

@adminRoute('/create/<id>', methods=['POST']) 
def create_room(id): 
    pass 

@adminRoute('/join/<id>') 
def join_room(id): 
    pass 

Antwort

0
def adminRoute(*route_args, **route_kwargs): 

    def outer(action_function): 
     @app.route(*route_args, **route_kwargs) 
     @requiresAdmin 
     @functools.wraps(action_function) 
     def inner(*f_args, **f_kwargs): 
      return action_function(f_args, f_kwargs) 
     return inner 

    return outer 
Verwandte Themen