2016-05-19 16 views
5

Tôi có một kế hoạch chi tiết và một số chức năng url,Làm thế nào để áp dụng trang trí cho tất cả các url kế hoạch chi tiết trong bình

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' 

Tôi không muốn sao chép dán @flask_login.login_required trang trí cho tất cả các chức năng url dưới kế hoạch chi tiết này. Có cách nào tốt hơn để tôi có thể áp dụng trang trí cho tất cả các url thiết kế?

Trả lời

1

Làm thế nào về việc kiểm tra người sử dụng đầu tiên:

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

này không trả lời câu hỏi tổng quát, mà có thể bao gồm mã có nghĩa là để thực thi * sau * một yêu cầu, không chỉ trước khi nó. Hàm ** @ after_request ** trang trí các hàm lấy đối tượng phản hồi làm đầu vào, nhưng ai đó có thể muốn xử lý trước giá trị trả về của tuyến trước khi nó được trả lời. –

Các vấn đề liên quan