私はdjango-allauthをユーザ認証に使用しています。ログイン後、ユーザは/hello/prehome/
にリダイレクトされなければなりません.'hello 'は私のアプリケーションの名前であり、プリハムのビューはユーザをホームページビューにリダイレクトし、ユーザIDと共にリダイレクトします。上記のURLをsettings.pyファイルのLOGIN_REDIRECT_URL
に指定しました。私が登録したユーザー名とパスワードでログインする場合しかし、私は新しいユーザーを登録すると、ページがホームページために正常にリダイレクトされますが、ホームページビューの「他」セクションエラー -Django - NoReverseMatch at/<url> /ログイン後
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,)))
を得続けます実行される。
次のプロジェクトで(アプリケーションのサブディレクトリにある)urls.py
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(
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')
プロジェクト -
から抜粋されていますフォルダ)
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')),
]
助けてください。
その場合、なぜ私はホームページにリダイレクトされず、このエラーに直面しますか?それは、エラーが 'return HttpResponseRedirect(reverse( 'homepage'、args =(user.id、))であることを示しています)'バックエンドではどういうことが起こっていますか? –