risposta

10

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.

+0

che ha aiutato. – user993563

+9

Il repository di clonazione è considerato una pratica molto negativa. – Red

+4

@Red Potresti elaborare? – Medorator

3

Dai un'occhiata all'applicazione example; ha una cartella templates che indica il layout dei modelli necessari

+0

bene ciò che ho fatto per implementare la libreria viene aggiunto un site_base.html nella mia cartella dei modelli con due blocchi {% block head_title%} {% endblock%} {corpo del blocco%%} {% endblock%} come posso modificare o sostituire i modelli incorporati, in quale directory posso trovarli dentro il mio virtualenv? – user993563

+0

'~/.virtualenvs/yourproject/lib/python2.7/site-packages/allauth' – boldnik

2

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.

+0

ha provato a non funzionare. – user993563

+0

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? –

+0

Non penso che copiare sia un buon modo. È molto meglio 'git clone' nella cartella del progetto piuttosto che duplicare il codice. – boldnik

19

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.

+1

Nella versione attuale sembra che dovresti avere un 'base.html' (ancora con' {% block content%} '). – Mark

+2

'' '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. –

8

Utilizzare la stessa logica di overriding admin templates.

+0

collegamento scaduto – ealeon

+0

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? –

9

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="">' 
0

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.

Problemi correlati