2017-07-28 7 views
1

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.

Antwort

1

Ich bin mir nicht sicher, ob das helfen wird. Wenn dies nicht der Fall ist, kann die Rückverfolgung des Fehlers hilfreich sein.

Versuchen

LOGIN_URL = 'accounts/login' 

zu

LOGIN_URL = '/accounts/login/' 
+0

Danke, Chris ändern! Es funktioniert jetzt. –