.. _views: .. module:: registration.views Registration views ================== In order to allow the utmost flexibility in customizing and supporting different workflows, |project| makes use of Django's support for `class-based views `_. Included in |project| are two base classes which can be subclassed to implement whatever workflow is required. .. class:: RegistrationView A subclass of Django's `FormView `_, which provides the infrastructure for supporting user registration. Useful places to override or customize on a ``RegistrationView`` subclass are: .. attribute:: disallowed_url The URL to redirect to when registration is disallowed. Should be a string, `the name of a URL pattern `_. Default value is ``registration_disallowed``. .. attribute:: form_class The form class to use for user registration. Can be overridden on a per-request basis (see below). Should be the actual class object; by default, this class is :class:`registration.forms.RegistrationForm`. .. attribute:: success_url The URL to redirect to after successful registration. Should be a string, the name of a URL pattern, or a 3-tuple of arguments suitable for passing to Django's `redirect shortcut `_. Can be overridden on a per-request basis (see below). Default value is ``None``, so that per-request customization is used instead. .. attribute:: template_name The template to use for user registration. Should be a string. Default value is ``registration/registration_form.html``. .. method:: get_form_class() Select a form class to use on a per-request basis. If not overridden, will use :attr:`~form_class`. Should be the actual class object. .. method:: get_success_url(user) Return a URL to redirect to after successful registration, on a per-request or per-user basis. If not overridden, will use :attr:`~success_url`. Should be a string, the name of a URL pattern, or a 3-tuple of arguments suitable for passing to Django's ``redirect`` shortcut. .. method:: registration_allowed() Should return a boolean indicating whether user registration is allowed, either in general or for this specific request. .. method:: register(form) Actually perform the business of registering a new user. Receives the registration ``form``. Should return the new user who was just registered. .. class:: ActivationView A subclass of Django's `TemplateView `_ which provides support for a separate account-activation step, in workflows which require that. Useful places to override or customize on an ``ActivationView`` subclass are: .. attribute:: template_name The template to use for user activation. Should be a string. Default value is ``registration/activate.html``. .. method:: activate(*args, **kwargs) Actually perform the business of activating a user account. Receives any positional or keyword arguments passed to the view. Should return the activated user account if activation is successful, or any value which evaluates ``False`` in boolean context if activation is unsuccessful. .. method:: get_success_url(user) Return a URL to redirect to after successful registration, on a per-request or per-user basis. If not overridden, will use :attr:`~success_url`. Should be a string, the name of a URL pattern, or a 3-tuple of arguments suitable for passing to Django's ``redirect`` shortcut. .. class:: ResendActivationView A subclass of Django's FormView` `_ which provides support for resending an activation email to a user. Useful places to override or customize on an ``ResendActivationView`` subclass are: .. attribute:: template_name The template to use for user activation. Should be a string. Default value is ``registration/resend_activation_form.html``. .. method:: resend_activation(self, form) Given an email, look up user by email and resend activation key if user is not already activated or previous activation key has not expired. Note that if multiple users exist with the given email, no emails will be sent. Returns True if activation key was successfully sent, False otherwise. .. method:: render_form_submitted_template(self, form) Renders resend activation complete template with the submitted email.