DJango: как правильно использовать Django аутентификацию? - PullRequest
0 голосов
/ 03 февраля 2020

Я использую учебник для реализации аутентификации (регистрации приложения), и он работает, но я не очень хорошо понимаю

Я объявил URL-адрес регистрации в django проекте

myproject / urls.py

path('registration/', include('django.contrib.auth.urls')),

Таким образом, для аутентификации используются стандартные LoginViews, LogoutViews ...

Я также объявил (ниже), но эти URL не используются, даже если я подавляю эти URL-адреса, аутентификация все еще работает ...

каков основной способ аутентификации?

registration / views.py

from . import views
from django.contrib.auth import views as auth_views


app_name='registration'
urlpatterns = [
    path('login/', views.login, name='login'),
    path('logout/', views.logout, name='logout'),
]```

1 Ответ

0 голосов
/ 03 февраля 2020

Вам просто нужно определить 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'),
# ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...