получить значение параметра в url Django - PullRequest
0 голосов
/ 09 мая 2020

Я новичок в Django, я хочу получить значение из URL-адреса, а затем использовать его в фильтре, но у меня возникла эта проблема.

, где значение - это поле модели, в 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()),

и Model.py

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

в URL

http://192.168.0.3: 8080 / номер_модели / 001-000002 /

ошибка:

Страница не найдена (404)

Текущий путь, / номер_модели / 001-000002 /, не соответствует ни одному из них.

Ответы [ 2 ]

1 голос
/ 09 мая 2020

вам необходимо изменить URL-адрес, чтобы зафиксировать параметр.

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

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)

обратите внимание на вопросительный знак в URL-адресе

1 голос
/ 09 мая 2020

Вы можете использовать kwargs ключ, определенный в url, чтобы получить значение этого ключа. Как:

    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)

...