Я играю с DRF просто для удовольствия и пытаюсь получить отдельную запись по ее ID.
Вот мои настройки:
Django версия 2.1.4
DjangoRestFramework 3.9.0
models.py
class BoardModel(models.Model):
board_title = models.CharField(
...
)
board_c_time = models.DateTimeField(
...
)
urls.py
urlpatterns = [
re_path(r'^get_board(?P<pk>\d*)$', views.GetBoard.as_view(), name="get-board"),
]
serializers.py
class GetBoardSerializer(serializers.ModelSerializer):
"""Board serializer."""
class Meta:
model = BoardModel
fields = ("id", "board_title", "board_c_time")
views.py
class GetBoard(APIView):
"""Get single board."""
def get_object(self, pk):
"""Search for the object."""
try:
return models.BoardModel.objects.get(pk=pk)
except models.BoardModel.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
"""GET method."""
pk = int(request.query_params.get('pk'))
obj = self.get_object(pk)
serializer = GetBoardSerializer(obj)
return Response(serializer.data)
Отправка GET-запроса на my_url.com/api/get_board?pk=123
.
ПозиционныйАргумент 'pk' в методе get
класса GetBoard
должен принимать значение из параметра pk
в URL (например, pk='123'
), однако он возвращает пустую строку.
Из-за этого яЯ должен был получить к нему доступ через request.query_params.get('pk')
, но мне это кажется странным.
Я что-то пропустил?
Как получить значение из параметра URL в позиционный аргумент в методе get, упомянутом выше?
Заранее большое спасибо!