How to use parameters in class view and url?

Viewed 37

I want to get parameter from template. But when I do it gives an error:

TypeError at /report/2000-01-01/2022-08-12/Investigations/ wrapper_func() missing 1 required positional argument: 'request'

It takes the parameters true but I think I can't pass them to the views. How can I do it?

views.py

class GroupingReportsPage(ReportsMixin, ListView):
    model = ProcessType
    def case_groups(date_1, date_2, process_group):
        fieldname = 'case_type_value'
        cases = Case.objects.filter(date_created__range=[date_1, date_2])
        process_types = ProcessType.objects.filter(reporting_group__option=process_group)
        report_group = {}
        print('cases')
        print('cases')
        print(cases)
        print(process_types)
        return cases

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        print('sadasds')
        self.case_groups()
        context['query_trend'] = 'query_trend'
        return context

urls.py

path('report/<str:date_1>/<str:date_2>/<str:process_group>/', report.GroupingReportsPage.as_view(), name='process_groups'),

template

<a href="{% url 'fdm:process_groups' date_1 date_2 index %}" style="color: black">
                    {{index}}
                </a>

traceback Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/report/2000-01-01/2022-08-12/Investigations/

Django Version: 3.2.14
Python Version: 3.8.9
Installed Applications:
['bvb',
 'fdm',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'guardian',
 'admin_reorder',
 'rest_framework',
 'django_filters',
 'drf_auto_endpoint',
 'jsonschemaform',
 'adminsortable2',
 'auditlog',
 'django_htmx',
 'crispy_forms',
 'django_celery_beat',
 'pgtrigger',
 'fdm_data',
 'front',
 'magic',
 'exchangelib',
 'django_sass',
 'debug_toolbar']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'admin_reorder.middleware.ModelAdminReorder',
 'auditlog.middleware.AuditlogMiddleware',
 'django_htmx.middleware.HtmxMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware']



Traceback (most recent call last):
  File "/Users/ed/Library/Python/3.8/lib/python/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/Users/ed/Library/Python/3.8/lib/python/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/ed/Library/Python/3.8/lib/python/site-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/ed/Library/Python/3.8/lib/python/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/Users/ed/PycharmProjects/fm/decorators/roles.py", line 20, in wrapper_func
    return view_func(request, *args, **kwargs)
  File "/Users/ed/Library/Python/3.8/lib/python/site-packages/django/contrib/auth/mixins.py", line 71, in dispatch
    return super().dispatch(request, *args, **kwargs)
  File "/Users/ed/Library/Python/3.8/lib/python/site-packages/django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users/ed/Library/Python/3.8/lib/python/site-packages/django/views/generic/list.py", line 157, in get
    context = self.get_context_data()
  File "/Users/ed/PycharmProjects/fm/views/report.py", line 680, in get_context_data
    self.case_groups()

Exception Type: TypeError at /report/2000-01-01/2022-08-12/Investigations/
Exception Value: case_groups() missing 3 required positional arguments: 'date_1', 'date_2', and 'process_group'
2 Answers
def get_context_data(self, request, **kwargs): 

Try to change your function declaration to include request parameter.

I'm not sure but this is probably caused by missing self parameter in custom method (which is not static).

Change this:

def case_groups(date_1, date_2, process_group):

To this:

@staticmethod
def case_groups(date_1, date_2, process_group):
Related