【问题标题】:attributeerror 'functools.partial' object has no attribute '__name__' [duplicate]属性错误“functools.partial”对象没有属性“__name__”[重复]
【发布时间】:2019-11-13 21:48:52
【问题描述】:

我正在使用 Django 2.2 和 Python 3.7,正在尝试创建一个名为 ajax_requireddecorators.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


【解决方案1】:

我已经通过这个链接@functools.wraps

我通过更新解决了,错误消失了

from functools import wraps
from django.http import Http404


def ajax_required(function):
    @wraps(function)
    def wrap(request, *args, **kwargs):
        if not request.is_ajax():
            raise Http404
        return function(request, *args, **kwargs)
    return wrap

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2014-05-14
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多