Django定制装饰不包装

2024-10-17 06:26:47 发布

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

我试图在Django中创建一个定制的decorator,并将其应用于url文件中基于类的视图。这是房间里的装修工装饰师.py. 它使用各种工具。我无法让包装器函数执行第二个日志命令。你知道吗

def user_isnt_blocked(func):
    logger.info("user_not_blocked call " + func.__name__)
    @wraps(func)
    def wrapper(self, request, *args, **kwargs):
        logger.info("user_not_blocked wrapper")
        return func(self, request, *args, **kwargs)
    return wrapper

现在,decorator什么也不做,因为我第一次尝试弄清楚如何让它做包装部分-即它是记录“user\u not\u blocked wrapper”。初始呼叫已记录-它将打印“用户未阻止呼叫”。基于类的视图的相关url模式编码如下:

urlpatterns = [
    url(r'update-profile/$', user_isnt_blocked(views.UpdateProfile.as_view()), name="update-profile"),]

基于类的视图如下所示:

class UpdateProfile(View):

    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super(UpdateProfile, self).dispatch(request, *args, **kwargs)

    def get(self, request):
        return super(UpdateProfile, self).dispatch(request, *args, **kwargs)

    def post(self, request):
        ...

对我所做的错事给予任何帮助都将不胜感激。你知道吗


Tags: self视图urlreturnrequestdefnotargs