2012-01-15 3 views
2

Я использую django, и я написал этот декоратор, чтобы убрать часть повторяющегося кода, который я нашел для просмотров ajax, и я хочу знать ваше мнение (слишком простой, плохой дизайн, попробуйте это вместо этого, хорошо и т. Д.).Является ли это хорошим дизайном python?

def ajax_only(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 
+2

Это лучший вопрос для http://s.tk/review. –

ответ

2

Да, это похоже на типичное и эффективное использование декоратора.

5

Единственный совет, который у меня есть, это предложить использование декоратора functools.wraps - он позволяет украшенной функции сохранять некоторые атрибуты (такие как имя функции), что облегчает отладку - приведенный выше код be like:

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 
+0

спасибо, я слышал об этом декораторе в видео-чате google tech, но они только что упомянули, и мне было интересно, где я могу его найти. – loki

Смежные вопросы