2016-05-19 6 views
5

Mam plan i niektórych funkcji zawartości,Jak stosować dekorator do wszystkich adresów URL Blueprint w kolbie

admin_bp = Blueprint('admin', __name__) 

@admin_bp.route('/dashboard', methods=['GET', ]) 
@flask_login.login_required 
def dashboard(): 

    context = {} 

    page = 'admin/dashboard.html' 
    return render_template(page, **context) 

@admin_bp.route('/deny', methods=['GET', ]) 
@flask_login.login_required 
def deny(): 
    return 'hey bro you dont belong here' 

ja nie chcę Kopiuj Wklej @flask_login.login_required dekorator dla wszystkich funkcji url w ramach niniejszego planu. Czy istnieje lepszy sposób na zastosowanie dekoratora do wszystkich adresów URL projektów?

Odpowiedz

1

Jak o sprawdzenie użytkownik najpierw:

from flask.ext.login import current_user 


@admin_bp.before_request 
def check_user(): 
    if not current_user.is_authenticated(): 
     abort(401) 

# your other functions without `@flask_login.login_required` 
+3

nie odpowiedzieć na pytanie ogólne, które mogą zawierać kod przeznaczona do wykonywania * po * prośba, a nie tylko przed nim. Funkcja ** @ after_request ** dekoruje funkcje, które pobierają obiekt odpowiedzi jako dane wejściowe, ale ktoś może chcieć wstępnie przetworzyć zwracaną wartość trasy, zanim stanie się ona responsywna. –

Powiązane problemy