【发布时间】:2019-11-13 21:48:52
【问题描述】:
我正在使用 Django 2.2 和 Python 3.7,正在尝试创建一个名为 ajax_required 的 decorators.py 函数,并且在运行服务器后出现此错误:
AttributeError 'functools.partial' object has no attribute '__name__'
装饰器.py
from django.http import Http404
def ajax_required(function):
def wrap(request, *args, **kwargs):
if not request.is_ajax():
raise Http404
return function(request, *args, **kwargs)
wrap.__doc__ = function.__doc__
wrap.__name__ = function.__name__
return wrap
【问题讨论】:
-
显然您正在尝试包装
functools.partial,而他们没有__name__。如果您使用functools.wraps,它会为您处理。 -
可能与this重复
-
那么你建议更新什么
-
仅供参考:
getattr(function, '__name__', None)可以代替function.__name__,并且在其他情况下可能有用。
标签: python django django-models python-decorators