2015-10-26 51 views
0

我想保護python-flask上的頁面,只能進入此頁面的用戶有限。python flask保護用戶頁面

我寫這樣的代碼:

def im_seller(): 
    if not g.user.seller_fee_paid: 
     return redirect(url_for('account.seller_fee')) 
    return 


@account.route('/account/seller/products.html') 
@login_required 
@im_seller 
def seller_products(): 

不工作的腳本,給這個錯誤:

TypeError: im_seller() takes no arguments (1 given) 

在那裏我錯了?謝謝大家。

回答

1

裝飾需要的功能和需要功能:

from functools import wraps 

def require_seller(f): 
    @wraps(f) 
    def require_seller_wrapper(*args, **kwargs): 
     if not g.user.seller_fee_paid: 
      return redirect(url_for('account.seller_fee')) 
     return f(*args, **kwargs) 
    return require_seller_wrapper 

你也想扭轉require_sellerlogin_required順序,這樣就可以確保g.user設置:

@account.route('/account/seller/products.html') 
@require_seller 
@login_required 
def seller_products(): 
    return "All the seller's products" 

有關所有細節,請參閱this answer about decorators

+0

是否安全是這種保護頁面的方法? – AutoSoft

+1

如果沒有看到'g.user'的實際代碼,很難討論安全問題。 –

0
from functools import wraps 

def require_seller(f): 
    @wraps(f) 
    def require_seller_wrapper(*args, **kwargs): 
     if not g.user.seller_fee_paid: 
      return redirect(url_for('account.seller_fee')) 
     return f(*args, **kwargs) 
return require_seller_wrapper 

你應該使用Python裝飾器。 Link