Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why does <myproject>/accounts/profile/ show the <myproject>/profile/ page

Using django-allauth, after a successful login a user is redirected to http://<myproject>/accounts/profile/... However this URL doesn't exists, but yet it still successfully shows view from http://<myproject>/profile/

settings.py

urlpatterns = [
    path('', include('pages.urls')),
    path('admin/', admin.site.urls),
    url(r'^accounts/', include('allauth.urls')),
    url('album/', include('albums.urls')),
    url('profile/', include('user_profile.urls')),
]

user_profile\urls.py

urlpatterns = [
    path('', views.profile, name='profile'),
]

using show_urls I don't see anything for /accounts/* which would call the view.profile view

/accounts/confirm-email/        allauth.account.views.EmailVerificationSentView account_email_verification_sent
/accounts/confirm-email/<key>/  allauth.account.views.ConfirmEmailView  account_confirm_email
/accounts/email/        allauth.account.views.EmailView account_email
/accounts/inactive/     allauth.account.views.AccountInactiveView       account_inactive
/accounts/login/        allauth.account.views.LoginView account_login
/accounts/logout/       allauth.account.views.LogoutView        account_logout
/accounts/password/change/      allauth.account.views.PasswordChangeView        account_change_password
/accounts/password/reset/       allauth.account.views.PasswordResetView account_reset_password
/accounts/password/reset/done/  allauth.account.views.PasswordResetDoneView     account_reset_password_done
/accounts/password/reset/key/<uidb36>-<key>/    allauth.account.views.PasswordResetFromKeyView  account_reset_password_from_key
/accounts/password/reset/key/done/      allauth.account.views.PasswordResetFromKeyDoneView      account_reset_password_from_key_done
/accounts/password/set/ allauth.account.views.PasswordSetView   account_set_password
/accounts/signup/       allauth.account.views.SignupView        account_signup
/accounts/social/connections/   allauth.socialaccount.views.ConnectionsView     socialaccount_connections
/accounts/social/login/cancelled/       allauth.socialaccount.views.LoginCancelledView  socialaccount_login_cancelled
/accounts/social/login/error/   allauth.socialaccount.views.LoginErrorView      socialaccount_login_error
/accounts/social/signup/        allauth.socialaccount.views.SignupView  socialaccount_signup

only the actual /profile/ url...

/profile/       user_profile.views.profile      profile

help me to understand why /accounts/profile/ is showing the /profile/ view...

like image 680
dangel Avatar asked Sep 16 '25 15:09

dangel


1 Answers

Actually redirecting to /accounts/profile/ is default behavior in django. In django global settings, it is defined as LOGIN_REDIRECT_URL. Django expects you to implement this page/url. Django django-allauth also uses same setting to redirect user after login.

If you want to redirect to any other page like /profile/, override this setting in your project settings.

LOGIN_REDIRECT_URL = '/profile/'

Or if you want django-allauth not to redirect at all set LOGIN_REDIRECT_URL = False in your settings as described here.

like image 200
Nafees Anwar Avatar answered Sep 18 '25 10:09

Nafees Anwar