Ich benutze django-allauth für die Benutzerauthentifizierung. Nach der Anmeldung muss der Benutzer zu /hello/prehome/
umgeleitet werden. "Hallo" ist der Name meiner App und die Ansicht für Pre-Home leitet den Benutzer zusammen mit einer Benutzer-ID zur Startseite. Ich habe die erwähnte URL in der Datei settings.py unter LOGIN_REDIRECT_URL
angegeben. Allerdings, wenn ich mit einem registrierten Benutzernamen und Passwort anmelden, ich bekomme immer wieder die fehler-Django - NoReverseMatch at/<url>/nach Login
NoReverseMatch at /hello/prehome/
Reverse for 'homepage' with arguments '(None,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['hello/homepage/(?P<user_id>[0-9]+)/$']
...
/app/hello/views.py in prehome
return HttpResponseRedirect(reverse('homepage',args=(user.id,)))
Wenn ich einen neuen Benutzer registrieren, wird die Seite normalerweise umgeleitet zur Startseite, sondern die ‚else‘ Abschnitt der Homepage-Ansicht wird ausgeführt.
Im Folgenden sind Auszüge aus dem projekt-
views.py
def register(request):
if request.POST:
form=RegistrationForm(request.POST)
if form.is_valid():
username=form.cleaned_data['username']
password=form.cleaned_data['password']
email=form.cleaned_data['email']
user=User.objects.create_user(username=username,password=password,email=email)
user.save()
user=auth.authenticate(username=username,password=password)
if user.is_active:
auth.login(request,user)
return HttpResponseRedirect(reverse('homepage',args=(request.user.id,)))
else:
form=RegistrationForm()
return render(request,'hello/registration/register.html',{'form':form,})
def prehome(request):
user=request.user
return HttpResponseRedirect(reverse('homepage',args=(user.id,)))
def homepage(request,user_id):
user=User.objects.get(id=user_id)
if request.user.is_authenticated():
if request.user.is_active:
return render(request,'hello/userprofile/homepage.html',{'user':user,})
else:
return render(request,'hello/userprofile/error.html')
urls.py (im Unterverzeichnis app)
from django.conf.urls import include, url
from . import views
urlpatterns=[
url(r'^prehome/$',views.prehome,name='prehome'),
url(r'^homepage/(?P<user_id>[0-9]+)/$',views.homepage,name='homepage'),
]
urls.py (in Projekt Ordner)
from django.conf.urls import include, url
from django.contrib import admin
admin.autodiscover()
from hello import views
urlpatterns = [
url(r'^$',views.index,name='index'),
url(r'^admin/',include(admin.site.urls)),
url(r'^accounts/',include('allauth.urls')),
url(r'^hello/',include('hello.urls')),
]
Bitte helfen Sie.
In diesem Fall, warum bin ich nicht auf die Homepage umgeleitet und eher mit diesem Fehler konfrontiert? Es besagt, dass der Fehler bei 'return HttpResponseRedirect (reverse ('homepage', args = (user.id,))) 'Was genau passiert im Backend? –