web-dev-qa-db-de.com

überschreiben der Standardvorlagen von Django-Allauth

Ich habe diese soziale Registrierung/Anmeldebibliothek Django allauth für ein Projekt von mir verwendet. Wie kann ich die Standardvorlagen und -formulare anpassen, um ein besseres Erscheinungsbild zu erzielen?

26
user993563

die neueste Version von all-auth on github hat seine Vorlagen außerhalb, die von Pypi jedoch nicht. Alles, was Sie tun müssen, ist, das Repo in Ihr Projektverzeichnis zu klonen und die Vorlagen zu überschreiben. So einfach ist das.

11
whatf

Angenommen, Sie haben ein Vorlagenverzeichnis auf Projektebene mit der Einstellung TEMPLATE_DIRS wie folgt festgelegt:

TEMPLATE_DIRS = (os.path.join(PROJECT_DIR, 'templates'),)

Sie sollten in der Lage sein, alle angezeigten Ordner hier in dieses Verzeichnis zu kopieren und sie nach Bedarf zu bearbeiten. Die meisten Vorlagen scheinen einen {% block content %}-Block zu füllen, daher ist es wahrscheinlich am einfachsten, wenn Ihre site_base.html-Vorlage diesen Block irgendwo definiert.

Wenn Sie TEMPLATE_DIRS nicht festgelegt haben, können Sie dasselbe tun, aber die Vorlagenordner in das Verzeichnis templates einer Ihrer Apps kopieren. Ich ziehe es vor, TEMPLATE_DIRS festzulegen und die Hauptwebsite-Vorlagen wie base.html dort zu belassen, da sie nicht wirklich zu einer bestimmten App gehören, aber das ist wirklich nur eine Präferenz. Der Vorlagenlader sollte sie so oder so finden.

21
Chris Lawlor

In Ihren Ansichten:

from allauth.account.views import SignupView, LoginView


class MySignupView(SignupView):
    template_name = 'my_signup.html'


class MyLoginView(LoginView):
    template_name = 'my_login.html'

Beachten Sie die Beispiele und Dokumente zur Strukturierung Ihrer eigenen Vorlagen.

Sehen Sie sich dieses Stück in den Beispielvorlagen an:

<form id="signup_form" method="post" action="{% url 'account_signup' %}">

Ich musste den URL-Link entfernen, damit er in meiner eigenen Vorlage ordnungsgemäß funktioniert:

<form id="signup_form" method="post" action="">'
10
Adam Starrh

Verwenden Sie die gleiche Logik wie Überschreiben von Admin-Vorlagen .

8
Burhan Khalid

Schauen Sie sich die Anwendung example an. Es verfügt über einen Ordner templates, der das Layout der erforderlichen Vorlagen angibt

3
Timmy O'Mahony

Um Django-allauth nach der Installation anzupassen, kopieren Sie es aus Site-Paketen und fügen Sie es in Ihr Projekt-Apps-Verzeichnis ein. Auf diese Weise werden die Standard-App allauth und ihre Vorlagen in der App allauth Ihres Projekts verwendet. Wenn Sie dann signup.html von socialaccount ändern möchten, gehen Sie zu apps\allauth\templates\socialaccount\signup.html und ändern Sie es, indem Sie es im Tag 'block content' bearbeiten:

{% block content %}
    // your customized html for signup form
{% endblock %}

Hoffe das wird dir helfen.

2
Zubair Afzal

All dies sind gute Vorschläge.

Die meisten davon sollten funktionieren.

Das einzige, was für mich funktionierte, war, meine eigenen Vorlagen in "project/app/templates/account /" aufzunehmen und sicherzustellen, dass "Django-allauth" in INSTALLED_APPS after my own app aufgelistet wird .

Ich habe dieses hier entdeckt.

1
trubliphone