这是一个好的python设计吗?

这是一个好的python设计吗?,python,django,decorator,Python,Django,Decorator,我正在使用django,我编写这个decorator是为了去掉我在ajax视图中发现的一些重复代码,我想知道你的看法(太基本了,设计不好,试试这个,好吧,等等) def ajax_仅限(func): 仅定义ajax(请求、*args、**kwargs): 如果不是,则请求。is_ajax(): 返回HttpResponse(“Ajax不受支持。”) 其他: 返回函数(请求、*args、**kwargs) 返回_ajax_ 是的,这看起来像是一个典型而有效的装饰器用法。我这里唯一的另一个技巧是建议

我正在使用django,我编写这个decorator是为了去掉我在ajax视图中发现的一些重复代码,我想知道你的看法(太基本了,设计不好,试试这个,好吧,等等)

def ajax_仅限(func):
仅定义ajax(请求、*args、**kwargs):
如果不是,则请求。is_ajax():
返回HttpResponse(“Ajax不受支持。

”) 其他: 返回函数(请求、*args、**kwargs) 返回_ajax_
是的,这看起来像是一个典型而有效的装饰器用法。

我这里唯一的另一个技巧是建议使用
functools.wrapps
decorator-它允许装饰的函数保留一些属性(如函数名),这使得调试更容易-上面的代码如下:

from functools import wraps
def ajax_only(func):
    @wraps(func)
    def _ajax_only(request,*args,**kwargs):
        if not request.is_ajax():
            return HttpResponse('<p>Ajax not supported.</p>')
        else:
            return func(request,*args,**kwargs)
    return _ajax_only
从functools导入包装
仅def ajax_(func):
@包装(func)
仅定义ajax(请求、*args、**kwargs):
如果不是,则请求。is_ajax():
返回HttpResponse(“Ajax不受支持。

”) 其他: 返回函数(请求、*args、**kwargs) 返回_ajax_
这是一个更好的问题。谢谢,我在谷歌技术谈话视频中听说了那个装饰师,但他们刚刚提到,我想知道在哪里可以找到它。
from functools import wraps
def ajax_only(func):
    @wraps(func)
    def _ajax_only(request,*args,**kwargs):
        if not request.is_ajax():
            return HttpResponse('<p>Ajax not supported.</p>')
        else:
            return func(request,*args,**kwargs)
    return _ajax_only