首页 > 解决方案 > 在 url Django 中获取参数值

问题描述

我是 Django 新手,我想从 URL 接收一个值,然后在过滤器中使用它,但我遇到了这个问题。

其中 value 是模型的一个字段,在 view.py

class ModelNumber(generics.ListAPIView):
    permission_classes = [
        IsAuthenticated,
    ]
    serializer_class = ModelSerializer 

    def get_queryset(self):
        queryset = Model.objects.all()
        value = self.request.query_params.get('value')
        return Model.objects.filter(value = value)

在 urls.py

path('model_number/(?P<receipt_ballot>\w+)$', views.ModelNumber.as_view()),

和模型.py

class Model(models.Model):                                                              
    value = models.CharField("Number Value", max_length=12, null=True)

在网址中

http://192.168.0.3:8080/model_number/001-000002/

错误 :

找不到页面 (404)

当前路径 /model_number/001-000002/ 与其中任何一个都不匹配。

标签: pythondjangofilterdjango-rest-frameworkget

解决方案


您可以使用kwargsurl 中定义的键来获取该键的值。像:

    def get_queryset(self):
        # What you wanted
        value_of_url_parameter = self.kwargs.get('receipt_ballot')

        queryset = Model.objects.all()
        value = self.request.query_params.get('value')
        return Model.objects.filter(value = value)


推荐阅读