2013-05-13 6 views
6

Próbowałem uruchomić django-allautha przez kilka dni i wreszcie dowiedziałem się, co się dzieje.Django-allauth ładuje nieprawidłowy szablon base.html

Zamiast ładować szablon base.html instalowany z django-allauth, aplikacja ładuje plik base.html, którego używam do reszty mojej witryny.

Jak mogę powiedzieć django-allauth, aby używał szablonu base.html w katalogu virtualenv/lib/python2.7/sitepackages/django-allauth zamiast mojego katalogu project/template?

Odpowiedz

6

Jeśli nie jesteś bezpośrednio wezwany, Twoja base.html jest rozszerzeniem zdefiniowanych szablonów.

Na przykład, jeśli renderujesz szablon o nazwie Page.html - u góry będziesz mieć {% extends "base.html" %}.

Kiedy zdefiniowane jak wyżej, base.html znajduje się w ścieżce że zdefiniowanych w settings.py pod TEMPLATE_DIRS =() - która z opisem, definiuje się jako project/template.

Najprościej jest, aby skopiować plik django-allauth base.html do zdefiniowanego TEMPLATE_DIRS lokalizacji, zmień jego nazwę na allauthbase.html, a następnie rozszerzyć swoje szablony umieścić go zamiast bazy domyślnej poprzez {% extends "allauthbase.html" %}.

Alternatywnie można dodać podfolder do lokalizacji szablonu, np. project/template/allauth, umieścić tam allauth base.html, a następnie użyć {% extends "allauth/base.html" %}.

2

Dwa lata później problem ten nadal występuje, a w przyjętej odpowiedzi brakuje niektórych nowych informacji.

Na github odkryłem, że wszystkie szablony allautów pochodzą z konta/base.html, które pochodzi z base.html. Moje rozwiązanie było:

  • W virtualenv/lib/python2.7/sitepackages/django-allauth/templates, skopiuj całą zawartość base.html zastąpić wszystko account/base.html (tj zastąpić oświadczenie {% extends 'base.html' %})
  • Usuń allauth jest base.html. Jest teraz zbędny.

Zrobione!

+1

Do zainstalować swój projekt na innym komputerze ... – Mark

+0

prawda. Nie rozumiałem takich rzeczy w tym czasie – ZG101

0

django-allauth szablony wydają się przedłużyć account/base.html (example), która rozszerza base.html.

Więc skopiować base.html do np myapp/templates/account/base.html i upewnij się, że myapp ładunki przed django-allauth (umieszczając go wyżej w INSTALLED_APPS).

Teraz szablony Django Auth przedłużą Twój account/base.html, który będzie django-allauth 's base.html.

Nie jest idealny, ponieważ django-allauth może zostać zaktualizowany, a przegapisz te aktualizacje. Ale wydaje się to lepsze niż zmiana nazwy całego importu lub zmiana kodu django-allauth.

pamiętać, że można również po prostu umieścić {% block content %} w swojej base.html wokół treści, a następnie django-allauth użyje tego stylu, który wydaje się być dobrą rzeczą w wielu przypadkach.

0

Allauth próbuje przedłużyć myproject/templates/base.html. Najprostsze sposoby są do poruszania base.html do myproject/templates/site/ aby dostać myproject/templates/site/base.html lub po prostu zmienić nazwę base.html

Powiązane problemy