Ho utilizzato questa libreria di registrazione/registrazione sociale django allauth per un mio progetto. Come posso personalizzare i modelli e i moduli predefiniti per dare un aspetto migliore?sovrascrivendo modelli predefiniti di django-allauth
risposta
l'ultima versione di all-auth su github ha i suoi modelli all'esterno, tuttavia quello su Pypi non lo è, è sufficiente clonare il repository nella directory del progetto e sovrascrivere i modelli. Così semplice.
Dai un'occhiata all'applicazione example
; ha una cartella templates
che indica il layout dei modelli necessari
bene ciò che ho fatto per implementare la libreria viene aggiunto un site_base.html nella mia cartella dei modelli con due blocchi
'~/.virtualenvs/yourproject/lib/python2.7/site-packages/allauth' – boldnik
Per personalizzare django-allauth dopo averlo installato, copiarlo dai pacchetti del sito e incollarlo nella directory delle app del progetto. In questo modo l'app predefinita allauth e i suoi modelli utilizzati saranno quelli nell'app allauth del tuo progetto. Poi, se si desidera modificare signup.html di socialaccount poi andare a apps \ allauth \ templates \ socialaccount \ signup.html e modificarlo editting tag dentro 'contenuto block':
{% block content %}
// your customized html for signup form
{% endblock %}
Spero che questo ti possa aiutare.
ha provato a non funzionare. – user993563
Penso che dovrebbe funzionare. Perché prima django guarda i modelli nell'app interna (app \ my_app \ templates \ my_app \), quindi nella directory dei modelli di progetto (templates \ my_app \) e poi passa ai pacchetti del sito dell'ambiente. Hai provato a cambiare il codice html nei template dei pacchetti del sito? –
Non penso che copiare sia un buon modo. È molto meglio 'git clone' nella cartella del progetto piuttosto che duplicare il codice. – boldnik
Supponendo di aver impostato una directory di modelli a livello di progetto utilizzando il TEMPLATE_DIRS
impostazione come:
TEMPLATE_DIRS = (os.path.join(PROJECT_DIR, 'templates'),)
Si dovrebbe essere in grado di copiare tutte le cartelle indicate here in quella directory e modificarli come avete bisogno. La maggior parte dei modelli sembra riempire un blocco {% block content %}
, quindi è probabilmente più semplice se il tuo modello site_base.html
definisce quel blocco da qualche parte.
Se non è stato impostato TEMPLATE_DIRS
, è possibile fare la stessa cosa, ma copiare le cartelle dei modelli nella directory templates
di una delle app. Preferisco impostare TEMPLATE_DIRS
e mantenere lì i modelli del sito principale come base.html
, dato che in realtà non appartengono a una particolare app, ma in realtà è solo una preferenza; il caricatore di template dovrebbe trovarli in entrambi i modi.
Nella versione attuale sembra che dovresti avere un 'base.html' (ancora con' {% block content%} '). – Mark
'' 'TEMPLATE_DIRS' '' è deprecato e parte di TEMPLATES https://docs.djangoproject.com/en/1.8/ref/templates/upgrading/. Copiare i modelli/qualsiasi cosa nel pacchetto è una cattiva pratica e ti farà male in seguito. –
Utilizzare la stessa logica di overriding admin templates.
collegamento scaduto – ealeon
Indipendentemente dal fatto che il collegamento sia a 1.9 o 1.10 documenti, è sorprendente leggere "All'interno di questa directory di amministrazione, creare sottodirectory nominate dopo l'app". Nome "directory", plurale, dopo la tua "app", singolare? –
In vostri punti di vista:
from allauth.account.views import SignupView, LoginView
class MySignupView(SignupView):
template_name = 'my_signup.html'
class MyLoginView(LoginView):
template_name = 'my_login.html'
si presta attenzione agli esempi e documentazione per strutturare i propri modelli.
Guarda questo pezzo nell'esempio templates però:
<form id="signup_form" method="post" action="{% url 'account_signup' %}">
ho dovuto rimuovere il collegamento URL per farlo funzionare correttamente nel mio modello:
<form id="signup_form" method="post" action="">'
Tutti questi sono buoni suggerimenti .
La maggior parte di questi dovrebbe funzionare.
L'unica cosa che ha funzionato per me, però, è stato quello di inserire i miei propri modelli in "progetto/app/templates/account /" e fare in modo che "django-allauth" viene elencato nella INSTALLED_APPS dopo mia app .
Ho scoperto questo here.
che ha aiutato. – user993563
Il repository di clonazione è considerato una pratica molto negativa. – Red
@Red Potresti elaborare? – Medorator