Jump to >

djblets.views.generic.base

Base classes and mixins for new class-based generic views.

class CheckRequestMethodViewMixin[source]

Bases: object

Generic view mixin to check the HTTP method before dispatching.

In a normal class-based view, it’s up to the dispatch() method to ensure that an HTTP method is valid before dispatching to the handler. However, more complex views may need to perform other checks before dispatching, meaning that logic is being performed before the validity checks happen, which would be unnecessary and wasteful.

This mixin, when put before any other mixins or parent classes, will perform the validity checks up-front and immediately bail with a HTTP 405 Method Not Allowed if the HTTP method is not allowed.

dispatch(request, *args, **kwargs)[source]

Dispatch a HTTP request to the right handler.

This will first check if the HTTP method is allowed. If it is not, then this will immediately return a HTTP 405 Method Not Allowed.

Parameters:
  • *args (tuple) – Positional arguments to pass to the handler.
  • **kwargs (dict) – Keyword arguments to pass to the handler.
Returns:

The resulting HTTP response to send to the client.

Return type:

django.http.HttpResponse

class PrePostDispatchViewMixin[source]

Bases: object

Generic view mixin to call methods before/after dispatching the handler.

This is useful for more complex generic views that take advantage of mixins that augment the dispatch() method. It allows views to perform additional actions both before and after the HTTP handler is called.

This mixin should be placed after any mixins that add decorators to dispatch() and before any mixins/classes that inherit from View() or provide an implementation of dispatch().

Views should generally not have more than one version of this mixin applied.

dispatch(*args, **kwargs)[source]

Dispatch a HTTP request to the right handler.

This will first call pre_dispatch(), returning the response if provided by that method. It will then dispatch as normal, and then call post_dispatch().

Parameters:
  • *args (tuple) – Positional arguments to pass to the handler.
  • **kwargs (dict) – Keyword arguments to pass to the handler.
Returns:

The resulting HTTP response to send to the client.

Return type:

django.http.HttpResponse

pre_dispatch(*args, **kwargs)[source]

Perform actions before dispatching to the HTTP method handler.

This can generate state before calling the appropriate HTTP method handler. It can optionally return a HTTP response, which will be returned directly to the client.

Subclasses don’t need to call the parent method, but can.

Parameters:
  • *args (tuple) – Positional arguments being passed to the handler.
  • **kwargs (dict) – Keyword arguments being passed to the handler.
Returns:

The resulting HTTP response to immediately send to the client. This is optional. Subclasses can return None or no value at all to allow the standard HTTP handler to run.

Return type:

django.http.HttpResponse

post_dispatch(response, *args, **kwargs)[source]

Perform actions after dispatching to the HTTP method handler.

The handler’s response is provided, allowing subclasses to alter the response. It must then return a response (either the existing one or a new one) to send to the client.

Subclasses don’t need to call the parent method, but can.

Parameters:
  • response (django.http.HttpResponse) – The HTTP response generated by the handler.
  • *args (tuple) – Positional arguments that were passed to the handler.
  • **kwargs (dict) – Keyword arguments that were passed to the handler.
Returns:

The resulting HTTP response to send to the client.

Return type:

django.http.HttpResponse