dud*_*ein 6 django decorator login-required
根据我同意的/sf/answers/610105331/中的一条评论,我们应该避免多个装饰器,如果一个取决于另一个.
因此,在示例中,如果我们为活动用户提供了一个装饰器"active_required",我们就不必在同一视图上同时使用active_required和login_required.
我们应该在"active_required"中以某种方式"调用""login_required"装饰器.
是否可以使用django附带的标准"login_required"装饰器来完成它?
我的要求是:1)如果用户未经过身份验证,我应该将他重定向到LOGIN_URL 2)如果用户已通过身份验证(通过login_required),但未激活,我应该将其重定向到"重新激活"他的页面帐户3)如果用户经过身份验证并处于活动状态,则用户可以访问该视图
提前致谢
在考虑你的问题时,我发现首先创建一个简单的active_required装饰器会更容易.这很容易,因为我们可以使用该user_passes_test函数django.contrib.auth.decorators.
那么问题就变为"我怎么结合login_required,并active_required成为一个设计师吗?".我们需要定义一个函数:
总而言之,您有以下几点:
from django.contrib.auth.decorators import user_passes_test, login_required
active_required = user_passes_test(lambda u: u.is_active, login_url=REACTIVATE_URL)
def active_and_login_required(view_func):
decorated_view_func = login_required(active_required(view_func))
return decorated_view_func
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
950 次 |
| 最近记录: |