我试图在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):
...
对我做错的任何帮助都将不胜感激。