2017-08-24 20 views
1

アクティベーションURLが間違っているか無効な場合、404エラーが表示されます。ページが見つかりません(404)djangoでエラーが発生しました

アカウント/ urls.py -

urlpatterns = [ 
    url(r"^signup/$", views.signup, name="account_signup"), 
    url(r'^login/$', views.login_view, name='account_login'), 
    url(r'^logout/$', auth_views.logout, {'next_page': '/account/login'}, name='logout'), 
    url(r'^confirmemail/$', views.confirmemail, name='account_confirmemail'), 
    url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',views.activate, name='activate'), 
] 

アカウント/ views.py

def activate(request, uidb64, token): 
    try: 
     uid = force_text(urlsafe_base64_decode(uidb64)) 
     user = User.objects.get(pk=uid) 
    except (TypeError, ValueError, OverflowError, User.DoesNotExist): 
     user = None 

    if user is not None and account_activation_token.check_token(user, token): 
     user.is_active = True 
     user.profile.email_confirmed = True 
     user.save() 
     user.profile.save() 
     login(request, user) 
     return redirect('home') 
    else: 
     return render(request, 'accounts/account_activation_invalid.html') 
     #return HttpResponseRedirect("account_activation_invalid.html") 

アカウント起動URLが間違っている場合はaccount_activation_invalid.htmlにリダイレクトする必要があります。

ヘルプ/リンクは高く評価されています。前もって感謝します。

+1

Djangoは、URLのマッチングのための正規表現を使用していますアクティベーションURLが適切でない場合(ネストされた引数の1つが不足している可能性があります)、これは一致しません。あなたのビューコードは実行されず、404はDjangoによってスローされます。 – anuragal

+0

説明のために@anuragalに感謝します。 –

答えて

1

私が正しく理解していれば、あなたが試すことができます:

をurls.py追加で:ビューで

url(r'^activate/',views.activate, name='empty_activate') 

にdefinitio変更:

def activate(request, uidb64=None, token=None): 
+0

ブリリアント。出来た。申し訳ありませんが、 'uidb64 = None、token = None'をなぜ設定する必要があるのか​​理解できませんでした。 –

+0

間違ったURLに行くと、デフォルト値になります –

関連する問題