Как я могу получить параметры из URL в django

Я пытаюсь отправить параметр по URL и пытаюсь использовать его в представлении списка. Но я не могу получить его в моем представлении. Я знаю, что делаю какую-то глупую ошибку, но не могу ее найти.

Вот ссылка, которую я использую в своем шаблоне:

<a class="dropdown-item" href="{% url 'listarmateriales' tipolista='metales' %}">Ver metales

Это мой url.py:

path('listarmateriales/<tipolista>',listarmateriales.as_view(), name='listarmateriales'),

Здесь я пытаюсь получить "tipolista" в моем views.py:

class listarmateriales(ListView):

 template_name = 'materiales/materialeslist.html'
 
   def get_queryset(self):
     if self.request.GET.get('tipolista') is not None:
        lista=Materiales.objects.all()
        tipolista=self.request.GET.get('tipolista' '')
        if tipolista=='metales':
            Do whatever...
        
        else: 

Я пробовал несколько разных синтаксисов, но результат всегда один и тот же, я не могу прочитать "tipolista", я потратил много времени на это, слишком много. Я знаю, что это должно быть что-то простое, но я новичок в этом. Заранее спасибо

Это не GET-параметры, это параметры URL. Они хранятся в self.kwargs, поэтому вы обращаетесь к ним с помощью:

def get_queryset(self):
    lista = Materiales.objects.all()
    tipolista = self.kwargs['tipolista']
    if tipolista=='metales':
        # …
    else:
        # …

они не могут быть None, так как существуют для того, чтобы "выстрелить" представлением.

вы можете посмотреть

  • Теперь давайте узнаем, как мы можем реализовать это в Django.

    Как получить параметр из URL в Django Django URL передает параметр в просмотр Django URL параметры в шаблоне Получение параметров из URL в Django пример Преобразователи пути Django Django URL параметры строка Django URL slug параметр

the link - https://pythonguides.com/get-url-parameters-in-django/

Чтобы urls.py распознал tipolista как строковую переменную, вы должны передать tipolista в качестве параметра представления. Таким образом, ваша функция представления должна быть примерно такой:

def get_queryset(self, tipolista):
 if self.request.GET.get('tipolista') is not None:
    lista=Materiales.objects.all()
    
    if tipolista=='metales':
        #...
    
    else:
        #...

В вашем шаблоне url, tipolista должна предшествовать 'str':

path('listarmateriales/<str:tipolista>',listarmateriales.as_view(), name='listarmateriales'),
Вернуться на верх