Да, возможно смешать дополнительные точки зрения Djoser
и knox
.Для этого мы собираемся создать имя приложения auth
, из которого мы будем обслуживать все конечные точки, связанные с аутентификацией.Теперь структура нашего проекта похожа на
MainProject
-auth
--__init__.py
--urls.py
-mainapp
....
Теперь в URL нашего приложения auth
мы будем обслуживать необходимые конечные точки для аутентификации.Для этого мы будем получать помощь от Djoser
ссылок ссылки и Knox
ссылок ссылки И наш URL-адрес auth.py будет похож на следующий
from django.conf.urls import url, include
from django.contrib.auth import get_user_model
from djoser import views as djsoer_views
from knox import views as knox_views
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('users', djsoer_views.UserViewSet)
User = get_user_model()
djoser_urlpatterns = [
url(
r'^users/create/?$',
djsoer_views.UserCreateView.as_view(),
name='user-create'
),
url(
r'^users/delete/?$',
djsoer_views.UserDeleteView.as_view(),
name='user-delete'
),
url(
r'^users/activate/?$',
djsoer_views.ActivationView.as_view(),
name='user-activate'
),
url(
r'^{0}/?$'.format(User.USERNAME_FIELD),
djsoer_views.SetUsernameView.as_view(),
name='set_username'
),
url(r'^password/?$', djsoer_views.SetPasswordView.as_view(), name='set_password'),
url(
r'^password/reset/?$',
djsoer_views.PasswordResetView.as_view(),
name='password_reset'
),
url(
r'^password/reset/confirm/?$',
djsoer_views.PasswordResetConfirmView.as_view(),
name='password_reset_confirm'
),
url(r'^$', djsoer_views.RootView.as_view(), name='root'),
url(r'^', include(router.urls)), ### If you want to add user view set
]
knox_urlpatterns = [
url(r'login/', knox_views.LoginView.as_view(), name='knox_login'),
url(r'logout/', knox_views.LogoutView.as_view(), name='knox_logout'),
url(r'logoutall/', knox_views.LogoutAllView.as_view(), name='knox_logoutall'),
]
urlpatterns = knox_urlpatterns + djoser_urlpatterns
Теперь мы собираемся добавить эти URL-адреса под URL-адресами нашего main_app
from django.urls import path
from django.conf import settings
auth_urls = include('auth.urls')
urlpatterns = [
path('api/auth/', auth_urls),
......
]
Теперь мы сможем получить доступ к каждой конечной точке, такой как вход в систему как api/auth/login/
или создание пользователя как api/auth/user/create/
и т. Д.
Что я вижу, что djoser добавляет некоторую дополнительную конечную точку UserViewset по умолчанию, в основном вам может это не нравиться, вы должны включить то, что вам действительно нужно.