#34003: PasswordResetView, PasswordResetDoneView, PasswordResetConfirmView, &
PasswordResetCompleteView  not discovering custom template
-------------------------------------+-------------------------------------
     Reporter:  Brylie Christopher   |                    Owner:  nobody
  Oxley                              |
         Type:  Uncategorized        |                   Status:  new
    Component:  contrib.auth         |                  Version:  4.1
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Old description:

> While defining URLs for a user password reset flow, I am using standard
> Django views such as PasswordResetView.
>
> {{{#!python
> path(
>     "password_reset/",
>     django.contrib.auth.views.PasswordResetView.as_view(),
>     name="password_reset",
> ),
> path(
>     "reset/<uidb64>/<token>/",
>     auth_views.PasswordResetConfirmView.as_view(),
>     name="password_reset_confirm",
> ),
> }}}
>
> The
> [https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetView
> PasswordResetView] and
> [https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetView
> PasswordResetConfirmView] docs say it will look for a template called
> ''registration/password_reset_form.html'' and
> "registration/password_reset_confirm.html" respectively and render that
> if available. When I define a template with the same name and location,
> the custom template is not discovered by the PasswordResetView nor
> PasswordResetConfirmView. Instead, the default Django Admin templates are
> rendered. This is despite other built in views like LoginView being able
> to fine conventionally named templates in the ''same'' directory.
>
> Of note, the two problematic views are both responsible for rendering and
> validating forms during the password reset flow.
>
> In order to work around the issue, I have had to move the custom template
> to a different template path specified via the template_name argument to
> the PasswordResetView:
>
> {{{#!python
> path(
>     "password_reset/",
>     django.contrib.auth.views.PasswordResetView.as_view(
>         template_name="accounts/password_reset_form.html",
>     ),
>     name="password_reset",
> ),
> path(
>     "reset/<uidb64>/<token>/",
>     auth_views.PasswordResetConfirmView.as_view(
>         template_name="accounts/password_reset_confirm.html",
>     ),
>     name="password_reset_confirm",
> ),
> }}}
>
> In honesty, it is very possible that I have made a typo in the file name,
> but I have tried multiple times with the same result.

New description:

 While defining URLs for a user password reset flow, I am using standard
 Django views such as PasswordResetView.

 {{{#!python
 path(
     "password_reset/",
     django.contrib.auth.views.PasswordResetView.as_view(),
     name="password_reset",
 ),
 path(
     "password_reset/done/",
     auth_views.PasswordResetDoneView.as_view(
         template_name="accounts/password_reset_done.html",
     ),
     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",
 ),
 }}}

 The
 
[https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetView
 PasswordResetView],
 
[https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetView
 PasswordResetDoneView],
 
[https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetView
 PasswordResetConfirmView] and
 
[https://docs.djangoproject.com/en/4.1/topics/auth/default/#django.contrib.auth.views.PasswordResetCompleteView
 PasswordResetCompleteView] docs say Django will look for templates called
 ''registration/*'' and render those if available.

 When I define templates with the documented name and location, the custom
 templates are not discovered by Django. Instead, the default Django Admin
 templates are rendered. This is despite other built in views like
 ''LoginView'' being able to fine conventionally named templates in the
 ''same'' directory.

 Of note, the problematic views are all part of the password reset flow.

 In order to work around the issue, I have had to move the custom template
 to a different template path specified via the template_name argument to
 the PasswordResetView:

 {{{#!python
 path(
     "password_reset/",
     django.contrib.auth.views.PasswordResetView.as_view(
         template_name="accounts/password_reset_form.html",
     ),
     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(
         template_name="accounts/password_reset_confirm.html",
     ),
     name="password_reset_confirm",
 ),
 path(
     "reset/done/",
     auth_views.PasswordResetCompleteView.as_view(
         template_name="accounts/password_reset_complete.html",
     ),
     name="password_reset_complete",
 ),
 }}}

 In honesty, it is very possible that I have made a typo in the file name,
 but I have tried multiple times with the same result.

--

Comment (by Brylie Christopher Oxley):

 I realized this issue affects all four views involved in the password
 reset flow.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34003#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/01070183283586d2-3969ea85-5be7-401b-a54e-6ed93bba51ff-000000%40eu-central-1.amazonses.com.

Reply via email to