Передача данных в ссылке urlpatterns listview django get_context_data

Как передать данные в ссылке в listview?

ursl.py

urlpatterns = [
        path('test/<str:data>/', TestView.as_view(), name='test'),
    ]

view.py

class TestView(ListView):
    model = Test
    template_name = 'test/test.html'
    context_object_name = 'test'

как получить данные data в классе TestView?

понимаю, что через self.kwargs, но не могу понять как


Ответы (1 шт):

Автор решения: JopaBoga

нашел ответ, делюсь

ursl.py

проверяем ссылку, если она содержит после test/ строку, то запускаем класс TestView в views.py

urlpatterns = [
        path('test/<str:data>/', TestView.as_view(), name='test'),
    ]

views.py

вызываем get_context_data и добавляем в словарь context переменную data, которая хранится в словаре kwargs

 class TestView(ListView):
        model = Test
        template_name = 'test/test.html'
        context_object_name = 'test'

        def get_context_data(self, *, object_list=None, **kwargs):
            context = super().get_context_data(**kwargs)
            context['data']= self.kwargs['data']
            return context

test.html

{{ data }} - вывод в шаблоне
{% test_tags data %} - если надо передать переменную в tags

test_tags.py

register = template.Library()
@register.inclusion_tag('test/test_tags.html')
def install_plugin(arg1='empty'):
    return {'data' : arg1}
→ Ссылка