Вам просто нужно определить URL-адреса в правильном порядке. Django читает маршруты сверху вниз и берется первое совпадение.
Если, например, вы хотите переопределить только вид входа в систему, вы можете сделать это в urls.py:
вашего проекта
path('registration/login/', my_views.login, name="login"),
path('registration/', include('django.contrib.auth.urls')),
Если вы хотите переопределить больше просмотров, я бы лучше переопределил все URL-адреса из django .contrib.auth.urls в вашей registration / urls.py . В этом случае сделайте следующее:
# project urls.py
from registration import urls as registration_urls
path('registration', include(registration_urls)),
# registration/urls.py
from django.contrib.auth import views as auth_views
from . import views as my_views
# ...
path('login', my_views.login, name="login"),
path('logout', my_views.logout, name="logout"),
# ...
path('password_change/', auth_views.PasswordChangeView.as_view(), name='password_change'),
path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
path('password_reset/', auth_views.PasswordResetView.as_view(), name='password_reset'),
path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
# ...