2013-05-21 10 views

Odpowiedz

2

Podczas korzystania widoki klasy oparte można utworzyć bazy klasa/wstawek dla wszystkich tych poglądów, które implementuje pożądanej funkcjonalności (również za pomocą decorators) i następnie wszelkie widoki dziedziczą z tej bazy widok.

from django.views.generic import TemplateView 

class BaseView(TemplateView): 

    def get(self, request, *args, **kwargs): 
     # do some checking here 
     if not request.user.is_authenticated(): 
      # do something if anonymous user 
     return super(BaseView, self).get(request, *args, **kwargs) 


class MyView(BaseView): 
    pass 
6

w adresach URL

url(r'someregexp/$', mydecorator(view.myview.dude), 'name_of_view'), 
+1

Właściwie to po prostu przenosi adnotacje do kontrolera. Chciałbyś zawrzeć oświadczenie dołączające. –

+1

Tak, absolutnie, ale twierdzę, że jest to lepsze ze względu na czytelność i łatwość konserwacji. Twierdzę, że używanie oprogramowania pośredniego (jak zwykle zalecałem, ponieważ uważałem, że są świetne) nie powinno być odpowiedzialne za to. Wprowadziłoby to dodatkową warstwę złożoności, a także przeszkadzałoby w widokach, które mogą być wyłączone dla twoich reguł, ale logicznie musi żyć w tym konkretnym aplikacjach views.py. Ale jesteś w 100% poprawny, ponieważ przenosi dekorator z views.py na urls.py. –

+0

Wiem, wskazując to na PO, zgadzam się, że jest to bardziej jednoznaczne i przejrzyste :-) –

Powiązane problemy