Django自定义装饰器没有包装

时间:2017-06-11 08:39:04

标签: python django python-decorators

我试图在Django中创建自定义装饰器并将其应用于URL文件中基于类的视图。这是decorators.py中的装饰器。它使用functools。我无法获得包装函数来执行第二个日志命令。

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

现在,装饰师什么也没做,因为我首先想弄清楚如何让它做包装部分 - 即记录" user_not_blocked包装& #34 ;.记录初始呼叫 - 执行打印" user_not_blocked呼叫"。基于类的视图的相关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):
        ...

对我做错的任何帮助都将不胜感激。

0 个答案:

没有答案
相关问题