11

Sto usando django-allauth per uno dei miei progetti. Vorrei implementare il processo di login/registrazione tramite ajax. Mi piacerebbe avere un modulo di iscrizione personalizzato. Stavo esaminando il loro modulo di iscrizione e registrazione. Sembra che io possa scrivere visualizzazioni personalizzate per ogni azione e mapparla alla configurazione dell'URL. Non sono sicuro di quale sia il modo migliore per farlo.Implementazione di richieste Ajax/risposta con django-allauth

Grazie mille per qualsiasi aiuto o consiglio su questo.

risposta

9

Dipende un po 'da cosa intendi con ajax. Se desideri semplicemente avere una casella di accesso/registrazione in stile pop-up su ogni pagina, puoi semplicemente aggiungere il modulo al modello di base e mostrarlo dinamicamente usando Javascript in una finestra popup o giù di lì. Se mantieni l'url dell'azione modulo negli url originali allauth, questo darà già l'impressione di un accesso Ajax. È inoltre possibile modificare le cose utilizzando $.ajax o $.post per postare le visualizzazioni originali allauth.

Qualcosa di simile a quanto sopra è fatto su http://officecheese.com/ - questo è un sito basato su allauth, sebbene io non sia affiliato con esso.

Se con ajax si intende che tutte le viste relative all'autenticazione dovrebbero essere visualizzate tramite ajax, senza causare un nuovo caricamento del documento, quindi temo che siate un po 'sfortunati. Questo è semplicemente problematico per gli scenari in cui la verifica della posta elettronica o gli handshake OAuth sono involventi, poiché in genere si sta navigando verso un nuovo URL dalla propria casella di posta o si reindirizza a Twitter e così via.

+1

Ciao @pennersr, bello avere la tua risposta. Vorrei implementare un modulo nel menu a discesa che è simile a ciò che officecheese.com sta facendo. ma se c'è un errore, diciamo "nome utente o password non validi" o "Nome utente già esistente". Vorrei ricevere questo errore proprio prima di navigare effettivamente. Quindi, qual è il mio piano è inviare il modulo tramite '$ .post' e avere una risposta JSON per il login e la registrazione. Grazie mille per avermi aiutato in questo. – san

+1

È possibile controllare la risposta alla chiamata '$ .post/ajax', estrarre il modulo html (contenente gli errori di convalida) e sostituire il modulo originale. Qualcosa come: '$ (" ... oldForm ... ")). ReplaceWith ($ (ajaxresponse) .find (" form "))'. Rilevare il reindirizzamento dell'URL di successo di accesso può diventare un po 'confuso, è necessario rilevare che si finisce nell'URL di reindirizzamento dell'accesso. Sostituire le viste per restituire dati JSON strutturati è tuttavia più pulito. Quindi, ancora una volta, perché passare attraverso il problema di cercare di ajaxify questo - siti come Twitter non lo fanno neanche. – pennersr

+0

@pennersr oltre a codificare l'ID nei modelli di base o utilizzare le viste basate sulla classe, c'è un modo per includere il modulo in tutte le mie viste basate sulle funzioni senza doverlo aggiungere ad ogni vista? – wasabigeek