调用d中需要的登录名

2024-04-25 20:25:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个定制的decorator,它将执行一些检查,以查看用户是否具有访问页面的权限,但在此之前,需要对用户进行身份验证。我想过使用Django的login_requireddecorator,然后执行我的自定义逻辑,但是我似乎找不到任何方法在自己的内部调用login_requireddecorator。你知道吗

我知道还有其他选择,比如像这样装饰我的视野:

@login_required
@my_custom_decorator
def my_view(request):
    pass

或者在我的装饰器中检查user.is_authenticated()

def my_custom_decorator(view_func):
    @wraps(view_func)
    def wrapper(request, *args, **kwargs):
        if not request.user.is_authenticated():
            redirect(...)

不过,我想从login_required中使用Django的逻辑。你知道吗

有没有办法在一个decorator中调用decorator,或者有没有其他方法来实现我的逻辑而不使用两个单独的decorator?你知道吗


Tags: django方法用户viewrequestmydefcustom
1条回答
网友
1楼 · 发布于 2024-04-25 20:25:43

您的decorator返回一个函数,例如

def my_custom_decorator(view_func):
    @wraps(view_func)
    def wrapper(request, *args, **kwargs):
        ...
    return wrapper

在返回函数之前,可以将其包装在login_required中:

def my_custom_decorator(view_func):
    @wraps(view_func)
    def wrapper(request, *args, **kwargs):
        ...
    return login_required(wrapper)

相关问题 更多 >