Commonly used methods in ListView
base refers to the file: \django\views\generic\base.py
list refers to the file: \django\views\generic\list.py
Default execution order:
base:view base:__init__ base:setup base:dispatch list:get list:get_queryset list:get_ordering list:get_allow_empty list:get_context_data list:get_paginate_by list:get_context_object_name base:get_context_data base:render_to_response list:get_template_names base:get_template_names
Importing:
from django.views.generic.list import ListView
get_queryset()
def get_queryset(self):
return MyModel.objects.filter(active=True)
Purpose: Determines the queryset to be displayed.
Use Case: Override this method to filter or modify the queryset.
get_context_data(**kwargs)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['extra_data'] = "Additional information"
return context
Purpose: Adds extra data to the template context.
Use Case: Pass additional information to the template.
get_template_names()
def get_template_names(self):
if self.request.user.is_staff:
return ['staff_list.html']
return ['user_list.html']
Purpose: Specifies the template(s) to be used.
Use Case: Dynamically choose templates based on conditions.
get_paginate_by(queryset)
def get_paginate_by(self, queryset):
return 10 # Items per page
Purpose: Determines the number of items per page.
Use Case: Set dynamic pagination limits.
get_ordering()
def get_ordering(self):
return ['-created_at']
Purpose: Specifies the ordering of objects in the queryset.
Use Case: Dynamically order the results.
dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated:
return redirect('login')
return super().dispatch(request, *args, **kwargs)
Purpose: Handles the request and determines the method to call (e.g., get).
Use Case: Add pre-processing logic, such as access control.
get()
def get(self, request, *args, **kwargs):
return super().get(request, *args, **kwargs)
Purpose: Handles GET requests.
Use Case: Customize the behavior for GET requests.
get_allow_empty()
def get_allow_empty(self):
return True
Purpose: Determines whether to allow empty lists.
Use Case: Customize the behavior when no objects are found.
render_to_response(context, **response_kwargs)
def render_to_response(self, context, **response_kwargs):
return super().render_to_response(context, **response_kwargs)
Purpose: Renders the template with the provided context.
Use Case: Customize the rendering process.
Django
21 Jan. 2025
|
Last Updated: 22 Nov. 2025
|
jaimedcsilva Related