Django Rest将URL中的参数发送到queryset

友人

我一直在寻找相关主题的答案,但没有一个工作。因此,遵循有关过滤的Django Rest Guid之后,我想添加通过url过滤数据的可能性。

我的看法是:

class ArtistList(generics.ListAPIView):
    serializer_class = ArtistSerializer

    def get_queryset(self):
        queryset = Artist.objects.all()
        name = self.request.query_params.get('name', None)
        print(name)
        if name is not None:
            queryset = queryset.filter(name=name)
        return queryset

和我的网址文件:

urlpatterns = [
...
path('artists/<str:name>', ArtistList.as_view(), name='artists'),    

]

当我提供以下网址时:http://localhost:8000/artists?name=A5表明该网址不存在。我也在尝试http://localhost:8000/artists/A5导致所有艺术家返回,而不是仅返回1。

我也尝试re_path('^artists/(?P<name>.+)/$', ArtistList.as_view(), name='artists'),按照指南中的示例进行操作,但是仍然出现错误。怎么了

我还有第二个问题。用参数操纵网址的最佳方法是什么?我的意思是我应该声明第一个用于返回所有对象的URL,第二个仅用于指定一个对象的URL?

威廉·范昂塞姆

您正在混淆两件事:

  1. 你有路径这部分往往是主机和前查询字符串,在查询字符串开始?,这样的路径http://localhost:8000/artists?name=A5artistsURL参数放在self.kwargs;

  2. 您拥有querystring querystring是一个键值对集合,该集合在问号之后开始,这些项目存储在中request.query_params

因此,如果要使用进行过滤/artists/A5,则可以使用:

# http://localhost:8000/artists/A5

class ArtistList(generics.ListAPIView):
    serializer_class = ArtistSerializer

    def get_queryset(self):
        return Artist.objects.filter(name=self.kwargs['name'])

在这种情况下,您总是需要提供一个名称,因为如您所知,不提供名称将返回HTTP 404响应。

如果要使用查询字符串,请将路径更改为:

# http://localhost:8000/artists?name=A5

urlpatterns = [
    # …,
    path('artists/', ArtistList.as_view(), name='artists'),    
]

然后self.query_params像以前一样使用在这种情况下,name=…被部分必需的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将slug字段中的url发送到Django中的url中

来自分类Dev

Django + Angular:如何将AngularJS $ http数据或参数发送到Django并在Django中解释?

来自分类Dev

将数据发送到Django通道

来自分类Dev

jQuery将文件发送到Django

来自分类Dev

将数据从Django发送到html

来自分类Dev

如何将参数从html发送到django view.py

来自分类Dev

使用Django URL将发布的信息发送到另一个页面

来自分类Dev

如何忽略发送到Django REST Framework的CSRF令牌?

来自分类Dev

在 Visual Studio Xamarin 中将图像发送到 Django Rest

来自分类Dev

通过get方法将数据发送到Django中的TemplateView

来自分类Dev

通过get方法将数据发送到Django中的TemplateView

来自分类Dev

将请求对象发送到Django中的模型方法是否是反模式?

来自分类Dev

将数据从view.py发送到Django中的javascript

来自分类Dev

无法将多个查询的数据发送到 Django 中的 ajax 调用

来自分类Dev

如何将数据从Django脚本发送到MySQL

来自分类Dev

将发布数据从python发送到Django

来自分类Dev

如何将选定的值发送到Django?

来自分类Dev

使用Django通道将数据发送到前端

来自分类Dev

Ajax没有将数据发送到Django视图

来自分类Dev

python,django,将数据发送到模板

来自分类Dev

如何将 Jinja 变量发送到 Django View

来自分类Dev

通过 Ajax 将文件发送到 Django

来自分类Dev

如何在后期请求中以某种方式将数据从Django模板发送到Views方法或以某种方式在URL中看不到数据

来自分类Dev

Django如何在queryset中标记要发送到模板的用户特定对象?

来自分类Dev

将 url 参数发送到 codeigniter 中的站点

来自分类Dev

使用Django将HTML输入中的值(字符串)发送到python脚本(views.py)

来自分类Dev

如何将电子邮件发送到Django receive_list中的settings.MANAGER

来自分类Dev

Django频道组发送仅将消息发送到最后一个频道

来自分类Dev

Django管理命令并将自定义参数发送到post_save信号

Related 相关文章

  1. 1

    如何将slug字段中的url发送到Django中的url中

  2. 2

    Django + Angular:如何将AngularJS $ http数据或参数发送到Django并在Django中解释?

  3. 3

    将数据发送到Django通道

  4. 4

    jQuery将文件发送到Django

  5. 5

    将数据从Django发送到html

  6. 6

    如何将参数从html发送到django view.py

  7. 7

    使用Django URL将发布的信息发送到另一个页面

  8. 8

    如何忽略发送到Django REST Framework的CSRF令牌?

  9. 9

    在 Visual Studio Xamarin 中将图像发送到 Django Rest

  10. 10

    通过get方法将数据发送到Django中的TemplateView

  11. 11

    通过get方法将数据发送到Django中的TemplateView

  12. 12

    将请求对象发送到Django中的模型方法是否是反模式?

  13. 13

    将数据从view.py发送到Django中的javascript

  14. 14

    无法将多个查询的数据发送到 Django 中的 ajax 调用

  15. 15

    如何将数据从Django脚本发送到MySQL

  16. 16

    将发布数据从python发送到Django

  17. 17

    如何将选定的值发送到Django?

  18. 18

    使用Django通道将数据发送到前端

  19. 19

    Ajax没有将数据发送到Django视图

  20. 20

    python,django,将数据发送到模板

  21. 21

    如何将 Jinja 变量发送到 Django View

  22. 22

    通过 Ajax 将文件发送到 Django

  23. 23

    如何在后期请求中以某种方式将数据从Django模板发送到Views方法或以某种方式在URL中看不到数据

  24. 24

    Django如何在queryset中标记要发送到模板的用户特定对象?

  25. 25

    将 url 参数发送到 codeigniter 中的站点

  26. 26

    使用Django将HTML输入中的值(字符串)发送到python脚本(views.py)

  27. 27

    如何将电子邮件发送到Django receive_list中的settings.MANAGER

  28. 28

    Django频道组发送仅将消息发送到最后一个频道

  29. 29

    Django管理命令并将自定义参数发送到post_save信号

热门标签

归档