Ich möchte, dass sich ein Benutzer anmeldet, bevor Seiten angezeigt werden. Gibt es eine integrierte Vorlage für die Benutzeranmeldung, sodass ich keine eigene Anmeldeseite erstellen muss?
Ja. Sie können hier alles darüber lesen: https://docs.djangoproject.com/de/1.8/topics/auth/default/#Django.contrib.auth.decorators.login_required ... aber hier sind einige Stichpunkte:
'Django.contrib.auth.middleware.AuthenticationMiddleware'
zu MIDDLEWARE_CLASSES
in settings.py
'Django.contrib.auth
'und 'Django.contrib.contenttypes'
zu INSTALLED_APPS
in settings.py
Django.contrib.auth.views.login
für die Ansicht ein, z. B. url(r'^login/$', 'Django.contrib.auth.views.login',name="my_login")
views.py ...
from Django.contrib.auth.decorators import login_required
@login_required
def home(request):
return HttpResponse('Home Page')
Standardmäßig setzen Sie die Vorlage dann in my_template_directory/registration/login.html
. Weitere Informationen zu dieser Vorlage finden Sie unter dem Link am Anfang dieses Beitrags.
Wie in den Kommentaren des Autors erwähnt, ist es am einfachsten, die folgenden Zeilen zu urls.py
Hinzuzufügen:
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),
)
Soweit mir bekannt ist, ist das Hinzufügen der URLs r'^accounts/$'
Und r'^accounts/profile/$'
Nur erforderlich, wenn eine Benutzerprofilverwaltung erforderlich ist.
Wie von @mmatt in Kommentaren vorgeschlagen, setzen Sie LOGIN_REDIRECT_URL = '/'
In settings.py
, Um die Standardumleitung nach der Anmeldung auf /accounts/profile/
Zu vermeiden. Siehe LOGIN_REDIRECT_URL in Django Einstellungsdokumentation.
Dies sollte auch in Django 2.x noch funktionieren und path
anstelle von url
verwenden.
Die meisten pvoted Antwort von @brant ist technisch falsch. Django bietet Standardansichten für die Anmeldefunktionalität, aber laut Dokumentation gibt es keine Vorlage:
Django bietet keine Standardvorlage für die Authentifizierungsansichten. Sie sollten Ihre eigenen Vorlagen für die Ansichten erstellen, die Sie verwenden möchten. Der Vorlagenkontext wird in jeder Ansicht dokumentiert, siehe Alle Authentifizierungsansichten.
Wenn Sie einen schnellen Weg zur Inbetriebnahme finden möchten, empfehlen wir Ihnen, die mitgelieferte URLConf zu verwenden.
beispielsweise:
urlpatterns = [
url('^', include('Django.contrib.auth.urls'))
]
Weitere Details finden Sie in der Django Dokumentation: https://docs.djangoproject.com/de/1.8/topics/auth/default/#module-Django.contrib.auth. Ansichten
Ähnlich wie bei der Antwort von mrts können Sie in neueren Versionen von Django LoginView verwenden. Sie können die Vorlage weiter anpassen, indem Sie den Vorlagenkontext wie title
, site_title
usw. wie in admin/base.html verwendet, damit es nicht wie ein Administrator-Login aussieht.
from Django.contrib.auth.views import LoginView
urlpatterns = [
url(
r'^accounts/login/$',
LoginView.as_view(
template_name='admin/login.html',
extra_context={
'title': 'Login',
'site_title': 'My Site',
'site_header': 'My Site Login'},
name='login'),
]