web-dev-qa-db-fra.com

redéfinition des templates par défaut de Django-allauth

J'ai utilisé cet enregistrement social/bibliothèque d'inscription Django allauth pour un de mes projets. Comment personnaliser les modèles et les formulaires par défaut pour améliorer l'apparence?

26
user993563

la dernière version de all-auth sur github a ses modèles à l'extérieur, mais celle sur Pypi ne l'est pas, il vous suffit de cloner le référentiel dans votre répertoire de projet et de remplacer les modèles. Aussi simple que cela.

11
whatf

En supposant que vous ayez défini un répertoire de modèles de niveau de projet à l'aide du paramètre TEMPLATE_DIRS, tel que:

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

Vous devriez pouvoir copier tous les dossiers affichés ici dans ce répertoire et les éditer à votre guise. La plupart des modèles semblent remplir un bloc {% block content %}; il est donc probablement plus simple si votre modèle site_base.html définit ce bloc quelque part.

Si vous n'avez pas défini TEMPLATE_DIRS, vous pouvez faire la même chose, mais copiez les dossiers de modèles dans le répertoire templates de l'une de vos applications. Je préfère définir TEMPLATE_DIRS et conserver les modèles de site principaux tels que base.html, car ils n'appartiennent pas vraiment à une application particulière, mais ce n'est qu'une préférence; le chargeur de gabarit devrait les trouver de toute façon.

21
Chris Lawlor

Dans vos vues:

from allauth.account.views import SignupView, LoginView


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


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

Faites attention aux exemples et à la documentation pour structurer vos propres modèles.

Regardez cette pièce dans les exemples de modèles cependant:

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

J'ai dû supprimer le lien URL pour que cela fonctionne correctement dans mon propre modèle:

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

Utilisez la même logique que écrasant les modèles d’administrateur .

8
Burhan Khalid

Consultez l'application example ; il a un dossier templates qui indique la disposition des modèles nécessaires

3
Timmy O'Mahony

Pour personnaliser Django-allauth après l'avoir installé, copiez-le à partir des packages de site et collez-le dans le répertoire des applications de votre projet. De cette manière, la valeur par défaut allauth app et ses modèles utilisés seront ceux du projet allauth app de votre projet. Ensuite, si vous souhaitez modifier signup.html of socialaccount , accédez à apps\allauth\templates\socialaccount\signup.html et modifiez-le en modifiant la balise 'block content':

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

J'espère que ceci vous aidera.

2
Zubair Afzal

Toutes ces suggestions sont bonnes.

La plupart d'entre eux devraient fonctionner.

La seule chose qui a fonctionné pour moi, cependant, a été d'inclure mes propres modèles dans "projet/app/modèles/compte /" et de s'assurer que "Django-allauth" est répertorié dans INSTALLED_APPS after ma propre application .

J'ai découvert ceci ici .

1
trubliphone