djangodjango-rest-frameworkdjango-rest-authdrf-yasgdjango-swagger

Django - Exclude URL from Django REST API Documentation? Using drf-yasg


How do I remove the path below from my API documentation with my current code?

path('users/reset/<uidb64>/<token>/', PasswordResetConfirmView.as_view()),

I don't want this path to be generated since it's not apart of my API.

I’m using drf_yasg to generate re-doc and swagger documentation.

Screenshot of what I'm currently seeing: enter image description here

Below is some of what's under the hood of urls.py.

urls.py

from rest_framework.documentation import include_docs_urls
from rest_framework.schemas import get_schema_view
from rest_framework import permissions

from allauth.account.views import ConfirmEmailView, EmailVerificationSentView
from dj_rest_auth.views import PasswordResetConfirmView

from drf_yasg import openapi
from drf_yasg.views import get_schema_view

API_TITLE = ‘Test API
API_DESCRIPTION = ‘Test ‘Description

schema_view = get_schema_view(
   openapi.Info(
      title=“title-test”,
      default_version='v1',
      description=“blah blah.”,
   ),
   public=True,
   permission_classes=(permissions.IsAuthenticated,),
)

urlpatterns = [

    # AllAuth Authentication
    path('accounts/', include('allauth.urls')),


    # Django REST API Paths
    path('api/', include('api.urls')),
    path('api-auth/', include('rest_framework.urls')),

    # ConfirmEmailView Needs to be defined before the registration path
    path('api/dj-rest-auth/registration/account-confirm-email/<str:key>/',
         ConfirmEmailView.as_view()), 

    path('api/dj-rest-auth/', include('dj_rest_auth.urls')),
    path('api/dj-rest-auth/registration/', include('dj_rest_auth.registration.urls')),
    path('api/dj-rest-auth/registration/account-confirm-email/',
         EmailVerificationSentView.as_view(), name='account_email_verification_sent'),
    # path('api/dj-rest-auth/reset/<uidb64>/<token>/', PasswordResetConfirmView.as_view()),

    # API Documentation Paths
    path('docs/', include_docs_urls(title="GameStation API", description=API_DESCRIPTION)),
    # path('schema/', schema_view),
    path('swagger<format>/', schema_view.without_ui(cache_timeout=0), name='schema-json'),
    path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),

   ## This path is what I’m trying to remove
    path('users/reset/<uidb64>/<token>/', PasswordResetConfirmView.as_view()),

]

Solution

  • So instead of excluding:

    path('users/reset/<uidb64>/<token>/', PasswordResetConfirmView.as_view()),
    

    I removed it completely. After that url is removed now my documentation reads accordingly: enter image description here

    Also, my backend looks like this once a user punches in the url that the password reset email spits out: enter image description here

    This works fine since I'm using allauth for registration/authentication now and this is only for the django back-end API stuff.

    Side note: This is only happening on the django back-end. When a users fills out the password-reset form on the front-end the url that gets spits out is the following:

    accounts/password/reset/key/xxx.../
    

    Not sure why there's a difference. But there is.

    If I need devs to confirm a token with an ID I can just point them to:

    api/dj-rest-auth/password/reset/confirm/