如何从 Django 中的 URL 获取参数

How can I GET the parameters from URL in django

我正在尝试通过 URL 发送参数并尝试在列表视图中使用它。但我无法在我看来得到它。我知道我犯了一些愚蠢的错误,但找不到它。

这是我在模板中使用的link:

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

这是我的 url.py:

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

这是我尝试在 views.py 中获取“tipolista”的地方:

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: 

我尝试了一些不同的 sintaxis,但结果总是一样,我无法阅读“tipolista”,我花了很多时间在这上面,太多了。我知道这一定很简单,但是,我是新手。提前致谢

这些是 不是 GET 参数,这些是 URL 参数。这些存储在 self.kwargs 中,因此您可以通过以下方式访问它们:

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

这些不能 None,因为它们的存在是为了“触发”视图。

你可以看看

  • 现在让我们学习如何在 Django 中实现它。

    如何在 Django 中从 URL 获取参数 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'),