2013-05-13 8 views
6

Ich habe versucht, Django-Allauth für ein paar Tage zu arbeiten, und ich endlich herausgefunden, was los war.Django-allauth lädt falsche base.html Vorlage

Anstatt die base.html Vorlage zu laden, die mit django-allauth installiert wird, lädt die App die base.html Datei, die ich für den Rest meiner Website verwende.

Wie sage ich Django-Allauth, die Vorlage base.html im Verzeichnis virtualenv/lib/python2.7/sitepackages/django-allauth anstatt meines Verzeichnisses project/template zu verwenden?

Antwort

6

Sofern nicht direkt aufgerufen, ist Ihre base.html eine Erweiterung der Vorlagen, die Sie definieren.

Zum Beispiel, wenn Sie eine Vorlage mit dem Namen Page.html rendern - oben haben Sie {% extends "base.html" %}.

Wenn, wie oben definiert, ist base.html im Pfad, den Sie in Ihrem settings.py unter TEMPLATE_DIRS =() definiert -, die aus Ihrer Beschreibung, wie project/template definiert ist.

Ihre beste Wette ist die django-allauth base.html Datei an den definierten TEMPLATE_DIRS Speicherort zu kopieren, benennen Sie sie in allauthbase.html, dann Ihre Vorlagen zu erweitern, um es über {% extends "allauthbase.html" %} anstelle des Standardbasis enthalten.

Alternativ können Sie einen Unterordner zum Speicherort Ihrer Vorlage hinzufügen, z. B. project/template/allauth. Platzieren Sie dort den Allauthenummer base.html, und verwenden Sie dann {% extends "allauth/base.html" %}.

2

Zwei Jahre später ist dies weiterhin ein Problem und die akzeptierte Antwort fehlt einige neue Informationen.

Auf github Ich entdeckte, dass alle Allauth-Vorlagen von account/base.html abgeleitet sind, die von base.html abgeleitet ist. Meine Lösung war:

  • In virtualenv/lib/python2.7/sitepackages/django-allauth/templates, den gesamten Inhalt des base.html kopieren alles in account/base.html ersetzen (das heißt ersetzen die {% extends 'base.html' %} Anweisung)
  • löschen allauth ist base.html. Es ist jetzt überflüssig.

Fertig!

+1

umbenennen Bis Sie Ihr Projekt auf einem anderen Rechner installieren ... – Mark

+0

True fest. Ich habe solche Dinge damals nicht verstanden – ZG101

0

django-allauth Vorlagen scheinen account/base.html (example) zu erstrecken, die base.html erstreckt.

So kopieren base.html auf zum Beispiel myapp/templates/account/base.html, und sicherstellen, dass myapp Lasten vor django-allauth (durch höhere INSTALLED_APPS setzen).

Jetzt erweitern die django auth templates Ihre account/base.html, die django-allauthbase.html ist.

Es ist nicht perfekt, seit django-allauth 's base.html möglicherweise aktualisieren und Sie werden diese Updates vermissen. Aber es scheint besser, als alle Ihre Importe umzubenennen oder django-allauth Code zu ändern.

Beachten Sie, dass Sie nur eine {% block content %} in Ihrem base.html um den Inhalt setzen, und dann wird django-allauth diesen Stil verwenden, die in vielen Fällen wie eine gute Sache zu sein scheint.

0

Allauth versucht zu erweitern myproject/templates/base.html. Die einfachsten Möglichkeiten sind base.html-myproject/templates/site/ zu bewegen, um myproject/templates/site/base.html zu bekommen oder einfach base.html

Verwandte Themen