class PasswordResetConfirmView
from django.contrib.auth.views import PasswordResetConfirmView
A view for displaying a form and rendering a template response.
Ancestors (MRO)
- PasswordResetConfirmView
- PasswordContextMixin
- FormView
- TemplateResponseMixin
- BaseFormView
- FormMixin
- ContextMixin
- ProcessFormView
- View
Attributes
| Defined in | |
|---|---|
| 
                                        content_type = None
                                     | TemplateResponseMixin | 
| 
                                        extra_context = None
                                     | PasswordContextMixin | 
| 
                                        extra_context = None
                                     | ContextMixin | 
| 
                                        form_class = <class 'django.contrib.auth.forms.SetPasswordForm'>
                                     | PasswordResetConfirmView | 
| 
                                        form_class = None
                                     | FormMixin | 
| 
                                        http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
                                     | View | 
| 
                                        initial = {}
                                     | FormMixin | 
| 
                                        post_reset_login = False
                                     | PasswordResetConfirmView | 
| 
                                        post_reset_login_backend = None
                                     | PasswordResetConfirmView | 
| 
                                        prefix = None
                                     | FormMixin | 
| 
                                        reset_url_token = 'set-password'
                                     | PasswordResetConfirmView | 
| 
                                        response_class = <class 'django.template.response.TemplateResponse'>
                                     | TemplateResponseMixin | 
| 
                                        success_url = reverse_lazy('password_reset_complete')
                                     | PasswordResetConfirmView | 
| 
                                        success_url = None
                                     | FormMixin | 
| 
                                        template_engine = None
                                     | TemplateResponseMixin | 
| 
                                        template_name = 'registration/password_reset_confirm.html'
                                     | PasswordResetConfirmView | 
| 
                                        template_name = None
                                     | TemplateResponseMixin | 
| 
                                        title = gettext_lazy('Enter new password')
                                     | PasswordResetConfirmView | 
| 
                                        token_generator = <django.contrib.auth.tokens.PasswordResetTokenGenerator object at 0x72fc5b7fde10>
                                     | PasswordResetConfirmView | 
| 
                                        view_is_async = False
                                     | View | 
Methods
                            
                                
                                    def
                                    __init__(self, **kwargs):
                                
                                
                                    View
                                
                                ¶
                            
                        
                        
                                    def
                                    __init__(self, **kwargs):
                                
                                
                                    View
                                
                                ¶
                            Constructor. Called in the URLconf; can contain helpful extra keyword arguments, and other things.
| 53 54 55 56 57 58 59 60 61 | def __init__(self, **kwargs): """ Constructor. Called in the URLconf; can contain helpful extra keyword arguments, and other things. """ # Go through keyword arguments, and either save their values to our # instance, or raise an error. for key, value in kwargs.items(): setattr(self, key, value) | 
                            
                                
                                    def
                                    _allowed_methods(self):
                                
                                
                                    View
                                
                                ¶
                            
                        
                        
                                    def
                                    _allowed_methods(self):
                                
                                
                                    View
                                
                                ¶
                            | 178 179 | def _allowed_methods(self): return [m.upper() for m in self.http_method_names if hasattr(self, m)] | 
                            
                                
                                    def
                                    as_view(cls, **initkwargs):
                                
                                
                                    View
                                
                                ¶
                            
                        
                        
                                    def
                                    as_view(cls, **initkwargs):
                                
                                
                                    View
                                
                                ¶
                            Main entry point for a request-response process.
| 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | @classonlymethod def as_view(cls, **initkwargs): """Main entry point for a request-response process.""" for key in initkwargs: if key in cls.http_method_names: raise TypeError( "The method name %s is not accepted as a keyword argument " "to %s()." % (key, cls.__name__) ) if not hasattr(cls, key): raise TypeError( "%s() received an invalid keyword %r. as_view " "only accepts arguments that are already " "attributes of the class." % (cls.__name__, key) ) def view(request, *args, **kwargs): self = cls(**initkwargs) self.setup(request, *args, **kwargs) if not hasattr(self, "request"): raise AttributeError( "%s instance has no 'request' attribute. Did you override " "setup() and forget to call super()?" % cls.__name__ ) return self.dispatch(request, *args, **kwargs) view.view_class = cls view.view_initkwargs = initkwargs # __name__ and __qualname__ are intentionally left unchanged as # view_class should be used to robustly determine the name of the view # instead. view.__doc__ = cls.__doc__ view.__module__ = cls.__module__ view.__annotations__ = cls.dispatch.__annotations__ # Copy possible attributes set by decorators, e.g. @csrf_exempt, from # the dispatch method. view.__dict__.update(cls.dispatch.__dict__) # Mark the callback if the view class is async. if cls.view_is_async: markcoroutinefunction(view) return view | 
                            
                                
                                    def
                                    dispatch(self, *args, **kwargs):
                                
                                
                                ¶
                            
                        
                        
                                    def
                                    dispatch(self, *args, **kwargs):
                                
                                
                                ¶
                            
                                            PasswordResetConfirmView
                                        
                                        | 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 | @method_decorator(sensitive_post_parameters()) @method_decorator(never_cache) def dispatch(self, *args, **kwargs): if "uidb64" not in kwargs or "token" not in kwargs: raise ImproperlyConfigured( "The URL path must contain 'uidb64' and 'token' parameters." ) self.validlink = False self.user = self.get_user(kwargs["uidb64"]) if self.user is not None: token = kwargs["token"] if token == self.reset_url_token: session_token = self.request.session.get(INTERNAL_RESET_SESSION_TOKEN) if self.token_generator.check_token(self.user, session_token): # If the token is valid, display the password reset form. self.validlink = True return super().dispatch(*args, **kwargs) else: if self.token_generator.check_token(self.user, token): # Store the token in the session and redirect to the # password reset form at a URL without the token. That # avoids the possibility of leaking the token in the # HTTP Referer header. self.request.session[INTERNAL_RESET_SESSION_TOKEN] = token redirect_url = self.request.path.replace( token, self.reset_url_token ) return HttpResponseRedirect(redirect_url) # Display the "Password reset unsuccessful" page. return self.render_to_response(self.get_context_data()) | 
                                            View
                                        
                                        | 133 134 135 136 137 138 139 140 141 142 143 | def dispatch(self, request, *args, **kwargs): # Try to dispatch to the right method; if a method doesn't exist, # defer to the error handler. Also defer to the error handler if the # request method isn't on the approved list. if request.method.lower() in self.http_method_names: handler = getattr( self, request.method.lower(), self.http_method_not_allowed ) else: handler = self.http_method_not_allowed return handler(request, *args, **kwargs) | 
                            
                                
                                    def
                                    form_invalid(self, form):
                                
                                
                                    FormMixin
                                
                                ¶
                            
                        
                        
                                    def
                                    form_invalid(self, form):
                                
                                
                                    FormMixin
                                
                                ¶
                            If the form is invalid, render the invalid form.
| 65 66 67 | def form_invalid(self, form): """If the form is invalid, render the invalid form.""" return self.render_to_response(self.get_context_data(form=form)) | 
                            
                                
                                    def
                                    form_valid(self, form):
                                
                                
                                ¶
                            
                        
                        
                                    def
                                    form_valid(self, form):
                                
                                
                                ¶
                            
                                            PasswordResetConfirmView
                                        
                                        If the form is valid, redirect to the supplied URL.
| 321 322 323 324 325 326 | def form_valid(self, form): user = form.save() del self.request.session[INTERNAL_RESET_SESSION_TOKEN] if self.post_reset_login: auth_login(self.request, user, self.post_reset_login_backend) return super().form_valid(form) | 
                                            FormMixin
                                        
                                        If the form is valid, redirect to the supplied URL.
| 61 62 63 | def form_valid(self, form): """If the form is valid, redirect to the supplied URL.""" return HttpResponseRedirect(self.get_success_url()) | 
                            
                                
                                    def
                                    get(self, request, *args, **kwargs):
                                
                                
                                    ProcessFormView
                                
                                ¶
                            
                        
                        
                                    def
                                    get(self, request, *args, **kwargs):
                                
                                
                                    ProcessFormView
                                
                                ¶
                            Handle GET requests: instantiate a blank version of the form.
| 140 141 142 | def get(self, request, *args, **kwargs): """Handle GET requests: instantiate a blank version of the form.""" return self.render_to_response(self.get_context_data()) | 
                            
                                
                                    def
                                    get_context_data(self, **kwargs):
                                
                                
                                ¶
                            
                        
                        
                                    def
                                    get_context_data(self, **kwargs):
                                
                                
                                ¶
                            
                                            PasswordResetConfirmView
                                        
                                        Insert the form into the context dict.
| 328 329 330 331 332 333 334 335 336 337 338 339 340 | def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) if self.validlink: context["validlink"] = True else: context.update( { "form": None, "title": _("Password reset unsuccessful"), "validlink": False, } ) return context | 
                                            PasswordContextMixin
                                        
                                        | 206 207 208 209 210 211 | def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update( {"title": self.title, "subtitle": None, **(self.extra_context or {})} ) return context | 
                                            FormMixin
                                        
                                        Insert the form into the context dict.
| 69 70 71 72 73 | def get_context_data(self, **kwargs): """Insert the form into the context dict.""" if "form" not in kwargs: kwargs["form"] = self.get_form() return super().get_context_data(**kwargs) | 
                                            ContextMixin
                                        
                                        | 29 30 31 32 33 | def get_context_data(self, **kwargs): kwargs.setdefault("view", self) if self.extra_context is not None: kwargs.update(self.extra_context) return kwargs | 
                            
                                
                                    def
                                    get_form(self, form_class=None):
                                
                                
                                    FormMixin
                                
                                ¶
                            
                        
                        
                                    def
                                    get_form(self, form_class=None):
                                
                                
                                    FormMixin
                                
                                ¶
                            Return an instance of the form to be used in this view.
| 33 34 35 36 37 | def get_form(self, form_class=None): """Return an instance of the form to be used in this view.""" if form_class is None: form_class = self.get_form_class() return form_class(**self.get_form_kwargs()) | 
                            
                                
                                    def
                                    get_form_class(self):
                                
                                
                                    FormMixin
                                
                                ¶
                            
                        
                        
                                    def
                                    get_form_class(self):
                                
                                
                                    FormMixin
                                
                                ¶
                            Return the form class to use.
| 29 30 31 | def get_form_class(self): """Return the form class to use.""" return self.form_class | 
                            
                                
                                    def
                                    get_form_kwargs(self):
                                
                                
                                ¶
                            
                        
                        
                                    def
                                    get_form_kwargs(self):
                                
                                
                                ¶
                            
                                            PasswordResetConfirmView
                                        
                                        Return the keyword arguments for instantiating the form.
| 316 317 318 319 | def get_form_kwargs(self): kwargs = super().get_form_kwargs() kwargs["user"] = self.user return kwargs | 
                                            FormMixin
                                        
                                        Return the keyword arguments for instantiating the form.
| 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | def get_form_kwargs(self): """Return the keyword arguments for instantiating the form.""" kwargs = { "initial": self.get_initial(), "prefix": self.get_prefix(), } if self.request.method in ("POST", "PUT"): kwargs.update( { "data": self.request.POST, "files": self.request.FILES, } ) return kwargs | 
                            
                                
                                    def
                                    get_initial(self):
                                
                                
                                    FormMixin
                                
                                ¶
                            
                        
                        
                                    def
                                    get_initial(self):
                                
                                
                                    FormMixin
                                
                                ¶
                            Return the initial data to use for forms on this view.
| 21 22 23 | def get_initial(self): """Return the initial data to use for forms on this view.""" return self.initial.copy() | 
                            
                                
                                    def
                                    get_prefix(self):
                                
                                
                                    FormMixin
                                
                                ¶
                            
                        
                        
                                    def
                                    get_prefix(self):
                                
                                
                                    FormMixin
                                
                                ¶
                            Return the prefix to use for forms.
| 25 26 27 | def get_prefix(self): """Return the prefix to use for forms.""" return self.prefix | 
                            
                                
                                    def
                                    get_success_url(self):
                                
                                
                                    FormMixin
                                
                                ¶
                            
                        
                        
                                    def
                                    get_success_url(self):
                                
                                
                                    FormMixin
                                
                                ¶
                            Return the URL to redirect to after processing a valid form.
| 55 56 57 58 59 | def get_success_url(self): """Return the URL to redirect to after processing a valid form.""" if not self.success_url: raise ImproperlyConfigured("No URL to redirect to. Provide a success_url.") return str(self.success_url) # success_url may be lazy | 
                            
                                
                                    def
                                    get_template_names(self):
                                
                                
                                    TemplateResponseMixin
                                
                                ¶
                            
                        
                        
                                    def
                                    get_template_names(self):
                                
                                
                                    TemplateResponseMixin
                                
                                ¶
                            Return a list of template names to be used for the request. Must return a list. May not be called if render_to_response() is overridden.
| 206 207 208 209 210 211 212 213 214 215 216 217 | def get_template_names(self): """ Return a list of template names to be used for the request. Must return a list. May not be called if render_to_response() is overridden. """ if self.template_name is None: raise ImproperlyConfigured( "TemplateResponseMixin requires either a definition of " "'template_name' or an implementation of 'get_template_names()'" ) else: return [self.template_name] | 
                            
                                
                                    def
                                    get_user(self, uidb64):
                                
                                
                                    PasswordResetConfirmView
                                
                                ¶
                            
                        
                        
                                    def
                                    get_user(self, uidb64):
                                
                                
                                    PasswordResetConfirmView
                                
                                ¶
                            | 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 | def get_user(self, uidb64): try: # urlsafe_base64_decode() decodes to bytestring uid = urlsafe_base64_decode(uidb64).decode() pk = UserModel._meta.pk.to_python(uid) user = UserModel._default_manager.get(pk=pk) except ( TypeError, ValueError, OverflowError, UserModel.DoesNotExist, ValidationError, ): user = None return user | 
                            
                                
                                    def
                                    http_method_not_allowed(self, request, *args, **kwargs):
                                
                                
                                    View
                                
                                ¶
                            
                        
                        
                                    def
                                    http_method_not_allowed(self, request, *args, **kwargs):
                                
                                
                                    View
                                
                                ¶
                            | 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | def http_method_not_allowed(self, request, *args, **kwargs): logger.warning( "Method Not Allowed (%s): %s", request.method, request.path, extra={"status_code": 405, "request": request}, ) response = HttpResponseNotAllowed(self._allowed_methods()) if self.view_is_async: async def func(): return response return func() else: return response | 
                            
                                
                                    def
                                    options(self, request, *args, **kwargs):
                                
                                
                                    View
                                
                                ¶
                            
                        
                        
                                    def
                                    options(self, request, *args, **kwargs):
                                
                                
                                    View
                                
                                ¶
                            Handle responding to requests for the OPTIONS HTTP verb.
| 163 164 165 166 167 168 169 170 171 172 173 | def options(self, request, *args, **kwargs): """Handle responding to requests for the OPTIONS HTTP verb.""" response = HttpResponse() response.headers["Allow"] = ", ".join(self._allowed_methods()) response.headers["Content-Length"] = "0" if self.view_is_async: async def func(): return response return func() else: return response | 
                            
                                
                                    def
                                    post(self, request, *args, **kwargs):
                                
                                
                                    ProcessFormView
                                
                                ¶
                            
                        
                        
                                    def
                                    post(self, request, *args, **kwargs):
                                
                                
                                    ProcessFormView
                                
                                ¶
                            Handle POST requests: instantiate a form instance with the passed POST variables and then check if it's valid.
| 144 145 146 147 148 149 150 151 152 153 | def post(self, request, *args, **kwargs): """ Handle POST requests: instantiate a form instance with the passed POST variables and then check if it's valid. """ form = self.get_form() if form.is_valid(): return self.form_valid(form) else: return self.form_invalid(form) | 
                            
                                
                                    def
                                    put(self, *args, **kwargs):
                                
                                
                                    ProcessFormView
                                
                                ¶
                            
                        
                        
                                    def
                                    put(self, *args, **kwargs):
                                
                                
                                    ProcessFormView
                                
                                ¶
                            | 157 158 | def put(self, *args, **kwargs): return self.post(*args, **kwargs) | 
                            
                                
                                    def
                                    render_to_response(self, context, **response_kwargs):
                                
                                
                                    TemplateResponseMixin
                                
                                ¶
                            
                        
                        
                                    def
                                    render_to_response(self, context, **response_kwargs):
                                
                                
                                    TemplateResponseMixin
                                
                                ¶
                            Return a response, using the `response_class` for this view, with a template rendered with the given context. Pass response_kwargs to the constructor of the response class.
| 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | def render_to_response(self, context, **response_kwargs): """ Return a response, using the `response_class` for this view, with a template rendered with the given context. Pass response_kwargs to the constructor of the response class. """ response_kwargs.setdefault("content_type", self.content_type) return self.response_class( request=self.request, template=self.get_template_names(), context=context, using=self.template_engine, **response_kwargs, ) | 
                            
                                
                                    def
                                    setup(self, request, *args, **kwargs):
                                
                                
                                    View
                                
                                ¶
                            
                        
                        
                                    def
                                    setup(self, request, *args, **kwargs):
                                
                                
                                    View
                                
                                ¶
                            Initialize attributes shared by all view methods.
| 125 126 127 128 129 130 131 | def setup(self, request, *args, **kwargs): """Initialize attributes shared by all view methods.""" if hasattr(self, "get") and not hasattr(self, "head"): self.head = self.get self.request = request self.args = args self.kwargs = kwargs |