Ich habe gerade angefangen zu lernen Django 1.10. Dabei möchte ich die Authentifizierungsfunktionalität mit all-auth
Paket und login_required
Dekorator implementieren.In Django 1.10 Authentifizierung mit allauth, login_required Dekorator funktioniert nicht
Hier ist der Snippet-Code von urls.py
Datei, die ich geschrieben habe.
from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static
from django.contrib import admin
from profiles import views as profiles_views
from contact import views as contact_views
urlpatterns = [
....
url(r'^profile/$', profiles_views.userProfile, name='profile'),
url(r'^accounts/', include('allauth.urls')),
]
Dies ist der Code der Datei views.py
.
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
....
@login_required
def userProfile(request):
user = request.user
context = {'user' : user}
template = "profile.html"
return render(request,template,context)
Hier ist die Einstellungen für allauth
.
LOGIN_URL = 'accounts/login'
LOGIN_REDIRECT_URL = '/'
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
ACCOUNT_CONFIRM_EMAIL_ON_GET = False
ACCOUNT_EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL = LOGIN_URL
ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = None
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 3
ACCOUNT_EMAIL_REQUIRED = False
ACCOUNT_EMAIL_VERIFICATION = None
ACCOUNT_EMAIL_SUBJECT_PREFIX = "My subject : "
ACCOUNT_DEFAULT_HTTP_PROTOCOL = "http"
ACCOUNT_LOGOUT_ON_GET = False
ACCOUNT_LOGOUT_REDIRECT_URL = '/'
ACCOUNT_SIGNUP_FORM_CLASS = None
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USER_MODEL_USERNAME_FIELD = "username"
ACCOUNT_USER_MODEL_EMAIL_FIELD = "email"
ACCOUNT_USERNAME_MIN_LENGTH = 5
ACCOUNT_USERNAME_BLACKLIST = []
ACCOUNT_USERNAME_REQUIRED = True
ACCOUNT_PASSWORD_INPUT_RENDER_VALUE = False
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True
Wie Sie sehen können, verwende ich login_required
Dekorateur userProfile
Funktion. Also, wenn ich gehe localhost/profile
auf dem Browser ohne anmelden, sollte der Browser auf localhost/accounts/login
- auf Login
Seite umgeleitet werden.
Aber immer wenn ich gehe localhost/profile
, der Browser umleiten zu http://localhost:8000/profile/accounts/login?next=/profile/
und natürlich bekomme ich Page not found
Fehler.
Ich würde gerne den Grund und die Lösung kennen.
Danke, Chris ändern! Es funktioniert jetzt. –