Próbuję wprowadzić widoki oparte na klasach w moim projekcie. Wyglądało dobrze do tej pory, dopóki nie znalazłem następujący problem.Jak przesłonić "as_view" w widokach opartych na klasach w Django?
Używam django-navigation
do tworzenia bułek tartych. Działa to tak: funkcja widoku zostaje ozdobiona, a ten dekorator wprowadza atrybut do tej funkcji o nazwie breadcrumb
. W szablonie rozwiązuje się bieżący adres URL lub jego część, a wynikowy widok jest sprawdzany pod kątem tego atrybutu. Jeśli tam jest, jest oceniany, a wynikiem jest tekst nawigacyjny.
Ponieważ widoki oparte na klasach są zwykle reprezentowane przez metodę as_view()
, wydaje się, że muszę ją udekorować, jednak ponieważ jest to metoda klasy, nie mogę uzyskać dostępu do instancji, która oczywiście zależy na.
Dołączanie atrybutu breadcrumb
do as_view()
w __init__()
również nie działa, lub mam błędną składnię. EDIT: Oczywiście to nie zadziałało, ponieważ podłączyłem go do as_view
, a nie do jego wartości zwracanej.
Jakieś pomysły na poprawną integrację tego dekoratora breadcrumb i widoków opartych na klasach?
Czy możesz to zrobić w pojedynczej linii? 'url (r '^ $', the_decorator (ListView.as_view()), name = 'app_index')'? –
Tak, możesz :) – nfg