def METHOD_NAME(self, request):
    context = super(DirectoryPage, self).METHOD_NAME(request)
    valid_filters = [
        FilterDefinition(
            form_field='search',
            filter_argument='title__icontains',
        ),
        FilterDefinition(form_field='language', filter_argument='languages'),
        FilterDefinition(form_field='country', filter_argument='countries'),
        FilterDefinition(form_field='topic', filter_argument='topics'),
    ]
    search_value = ''
    form = FilterForm(request.GET)
    if form.is_valid():
        entry_filters = {
            filter_def.filter_argument: form.cleaned_data[filter_def.form_field]
            for filter_def in valid_filters
            if form.cleaned_data[filter_def.form_field]
        }
        search_value = form.cleaned_data['search'].strip()
    else:
        entry_filters = {}
    entry_qs = self.get_instances(filters=entry_filters)
    paginator, entries = paginate(
        request,
        entry_qs,
        page_key=DEFAULT_PAGE_KEY,
        per_page=self.per_page,
        orphans=self.orphans
    )
    context['search_value'] = search_value
    context['entries_page'] = entries
    context['entries_filters'] = entry_filters
    context['paginator'] = paginator
    context['all_filters'] = {
        'languages': form.fields['language'].queryset,
        'countries': form.fields['country'].queryset,
        'topics': form.fields['topic'].queryset,
    }
    return context