Desidero consentire a un utente di accedere prima di visualizzare le pagine. C'è un modello incorporato per l'accesso degli utenti, in modo che non debba scrivere la mia pagina di accesso?Esiste un modello di accesso incorporato in Django?
risposta
Sì. È possibile leggere tutto su di esso qui: https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.decorators.login_required ... ma qui ci sono alcuni punti elenco:
- aggiungere
'django.contrib.auth.middleware.AuthenticationMiddleware'
-MIDDLEWARE_CLASSES
insettings.py
- aggiungere
'django.contrib.auth
'e'django.contrib.contenttypes'
-INSTALLED_APPS
insettings.py
- configurare un URL per il login usando
django.contrib.auth.views.login
per la vista, comeurl(r'^login/$', 'django.contrib.auth.views.login',name="my_login")
- Nella tua vista, includi il decoratore login_required e aggiungilo prima della tua vista. Per esempio ...
views.py ...
from django.contrib.auth.decorators import login_required
@login_required
def home(request):
return HttpResponse('Home Page')
Per impostazione predefinita, poi mettere il modello interno my_template_directory/registration/login.html
. Ulteriori informazioni su quel modello possono essere trovate al link all'inizio di questo post.
Grazie per l'informazione. Ottengo un'eccezione: TemplateDoesNotExist Tuttavia, la pagina di accesso di amministratore (anche dalla cartella dei modelli) esiste. – stanleyxu2005
puoi passare in un argomento 'template_name': 'percorso/a/tuo/template.html' nell'urlconf per assicurarti che stia cercando di leggere il modello dalla posizione corretta –
@ stanleyxu2005 se vuoi usare il modello predefinito , è necessario crearlo effettivamente in una sottocartella della directory dei modelli. – Brant
Come accennato nei commenti dell'autore, il modo più semplice per farlo è quello di aggiungere le seguenti righe per urls.py
:
from django.contrib.auth.views import login, logout
urlpatterns = patterns('',
url(r'^accounts/login/$', login, {'template_name': 'admin/login.html'}),
url(r'^accounts/logout/$', logout),
)
Per quanto ne so, aggiungendo le r'^accounts/$'
e r'^accounts/profile/$'
URL non è necessario a meno che non sia richiesta la gestione del profilo utente.
Come suggerito da @mmatt nei commenti, impostare LOGIN_REDIRECT_URL = '/'
in settings.py
per evitare il reindirizzamento predefinito su /accounts/profile/
dopo il login. Vedi LOGIN_REDIRECT_URL nella documentazione delle impostazioni di Django.
Questo dovrebbe funzionare anche in Django 2.x utilizzando path
anziché url
in modo appropriato.
Imposta 'LOGIN_REDIRECT_URL = '/'' nel tuo settings.py per reindirizzare a una pagina diversa da/accounts/profilo. – mehmet
Supporto per gli argomenti vista stringa in 'url()' [è stato rimosso con Django 1.10] (https://docs.djangoproject.com/en/1.11/releases/1.10/#features-removed-in-1-10) . Usa 'da import django.contrib.auth.views login di importazione' e 'url (r'^account/login/$ ', login, ...' invece (e simile per il logout). – Evert
Grazie, aggiornato. – mrts
Se si desidera intraprendere un percorso rapido per salire e correre, si consiglia di utilizzare l'URLConf fornito.
ad esempio:
urlpatterns = [
url('^', include('django.contrib.auth.urls'))
]
Vedi i dettagli nella documentazione django: https://docs.djangoproject.com/en/1.8/topics/auth/default/#module-django.contrib.auth.views
E un esempio di modello di login sulla stessa pagina: https://docs.djangoproject.com/en/1.8/topics/auth/default/#all-authentication-views Sembra che non ce ne siano di built-in? E nemmeno la registrazione, sembra come se fosse necessario un modulo di terze parti per questo: https://www.djangopackages.com/grids/g/registration/ –
Correzione automatica: alcune viste hanno modelli incorporati, come 'account/password_reset /', altri don ' mi piace 'account/login /'. –
Il più upvoted response da @brant è tecnicamente corretto. Django fornisce viste predefinite per gestire le funzionalità di accesso ma per lo non fornisce un modello:
Django non fornisce un modello predefinito per le viste di autenticazione. È necessario creare i propri modelli per le viste che si desidera utilizzare. Il contesto del modello è documentato in ogni vista, vedi Tutte le viste di autenticazione.
- 1. Django accesso modello ForeignKey oggetti
- 2. Accesso campo Modello attributi in Django
- 3. accesso al modello dal middleware - django
- 4. Campi di accesso nel modello intermedio Django
- 5. Django - oggetti modello di accesso nome verbose
- 6. Accesso a field.ch di Django
- 7. Esecuzione di una ricerca stile getattr() in un modello django
- 8. Accesso alla utente connesso in un modello
- 9. Crea modello Django o aggiorna se esiste
- 10. Esiste un framework di registrazione incorporato in .NET?
- 11. Come creare un modello riutilizzabile in Django?
- 12. Esiste un filtro modello django per visualizzare le percentuali?
- 13. Modello utente Django Oauth
- 14. Esiste un filtro per dividere per il modello Django?
- 15. Moltiplica per -1 in un modello Django
- 16. Esiste un equivalente SQLAlchemy di django-evolution?
- 17. Controllare se il campo modello esiste in Django
- 18. Come ottengo tutte le variabili definite in un modello Django?
- 19. URL tag modello in modello di Django
- 20. modelli django = business logic + accesso ai dati? O il livello di accesso ai dati dovrebbe essere separato dal modello django?
- 21. Accesso al contesto radice nel modello Handlebar.js
- 22. Errore accesso accesso log SNMP4j incorporato e successo
- 23. Modulo% in modello Django
- 24. CatchingNon esiste eccezione in un gestore personalizzato in Django
- 25. Come estendi il modello Site in django?
- 26. Django - Accesso tramite ManyToMany campo aggiuntivo nel modello
- 27. Dropdown in Django Modello
- 28. Visualizzazione di un oggetto timedelta in un modello di Django
- 29. Django: tag incorporato incluso tag di inclusione personalizzato
- 30. Modello di rendering di Django all'interno di un modello
'Django fornisce ** nessun modello predefinito ** per le viste di autenticazione. Dovresti creare i tuoi modelli per le viste che desideri utilizzare. ' –