python - DRF- Django Rest Framework re_path 查询参数 - "Method\"GET\"not allowed."

标签 python django api rest django-rest-framework

我一直在尝试使用 urls.py 文件中的 re_path 方法获取泛型 RetrieveAPIView 类。在尝试了几种组合之后,我只能让路径方法起作用。我想要一个类似于 /file?id={some_uid} 的端点。

到目前为止,我有以下内容:

  • Django :3.0.6
  • djangorestframework=3.11.0

views.py:

class UploadFileInfoView(generics.RetrieveAPIView):
    lookup_field = "id"
    queryset = Upload.objects.all()
    serializer_class = UploadModelSerializer

urls.py:

from django.urls import path, re_path
from . import views

urlpatterns = [
    path("file/", views.UploadFileView.as_view(), name="UploadFile"),
    # this works
    # path("file/<uuid:id>", views.UploadFileInfoView.as_view(), name="UploadFileInfo"), 
    # this does not
    re_path(r"^file/(?P<id>[0-9A-Fa-f-]+)", views.UploadFileInfoView.as_view(), name="UploadFileInfo"),
]

没有像文档中说的那样使用 url 方法

This function is an alias to django.urls.re_path(). It’s likely to be deprecated in a future release.

最佳答案

据我所知,Query 参数默认传递给 django View 。所以你不需要在 URL 中显式地处理它。在你的情况下,如果你想要 /file?id={some_uid} ,你应该在 View 中处理它或覆盖 get_queryset 方法。

urls.py

urlpatterns = [
# ** your other urls **
    path(r"file", views.UploadFileInfoView.as_view(), name="UploadFileInfo"),
]

views.py

class UploadFileInfoView(generics.ListAPIView):
    lookup_field = "id"
    queryset = Upload.objects.all()
    serializer_class = UploadModelSerializer

    def get_queryset(self):
        return Upload.objects.get(id=self.request.GET.get('id'))

以上设置适用于 /file/?id=1234 并返回 Upload.objects.get(id=1234)。我没有测试过这段代码,但它应该可以工作,而且如果对象不存在,您还需要处理异常。

关于python - DRF- Django Rest Framework re_path 查询参数 - "Method\"GET\"not allowed.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61846371/

相关文章:

python - 使用 python c api 获取共享对象的完整路径

sql - Django ORM : filter by hour range

api - 如何在 jsfiddle.net 中使用 trello api client.js

python - 如何在任何 Python 项目中找出代码执行的起点?

python - 每次要么是 websocket 要么是 Tornado 宕机了。

django - 被 CORS 策略阻止 : No 'Access-Control-Allow-Origin' header is present on the requested resource

python - 导入错误: cannot import name import_module

api - 有没有开源的离线翻译工具

用于 API 的 perl 测试套件

python - MySQL 在 "Unknown column ' 中给出了 'field list' user.id' 错误使用 Django 的自动 id