【问题标题】:How can I set query params in a url of django rest framework?如何在 django rest 框架的 url 中设置查询参数?
【发布时间】:2019-12-24 15:31:27
【问题描述】:

我有一个 API,我需要从 Redis 的缓存中删除一些东西 因此,我构建了一个视图并将其同步到一个 url,但我不断收到 HTTP_404(未找到)。

class ExpireRoom(APIView):
    permission_classes = (IsAuthenticated, )

    def delete(self, request, format=None):
        room_manager = RoomManager()
        room_identifier = self.kwargs['room_identifier']
        is_success = room_manager.delete(room_identifier)
        if is_success:
            return Response(status=status.HTTP_200_OK)
        else:
            return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)

这是我在 urls.py 中的网址:

urlpatterns = [
    url(r'^expire-room/(?P<room_identifier>\w+)/$', 
        ExpireRoom.as_view(),
        name='core_ExpireRoom_deletingRoom')
]

【问题讨论】:

  • 您能否提供一个带有 curl 或其他内容的示例请求?
  • 请注意,查询参数不是 URL 路径的一部分,即您不需要在 url 模式中预先定义它们。如果您有 /expire-room/ 的模式,那么 /expire-room/?myparam=hello&someotherparam=world 将正常工作并通过 myparam和 someotherparam 到 request.GET 字典。

标签: django django-rest-framework django-views http-status-code-404 django-urls


【解决方案1】:

不确定您请求的是什么 URL,但您的问题标题表明您正在传递查询参数。

查询参数不是 URL 路径的一部分,即您不需要在 url 模式中预先定义它们。如果您有 /expire-room/ 的模式,那么 /expire-room/?myparam=hello&someotherparam=world 将正常工作并通过 myparam和 someotherparam 到 request.GET 字典。

您定义的 URL 模式将仅匹配以 /expire-room/some-room/ 开头的 URL,其中 some-room 是任何字符串。

【讨论】:

  • 感谢您的响应请求。GET 工作,我会使用它。但无论如何,在上一段中,您提到以 /expire-room/some-room/ 开头的 URL 可以工作,但它不起作用,它给了我一个 404 未找到。
猜你喜欢
  • 2014-06-28
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
相关资源
最近更新 更多