关键词:
【中文标题】在 django-rest-framework 中捕获参数【英文标题】:Capture parameters in django-rest-framework 【发布时间】:2014-02-13 02:01:42 【问题描述】:假设这个网址:
http://localhost:8000/articles/1111/comments/
我想获取给定文章的所有 cmets(此处为 1111)。
这就是我捕获此网址的方式:
url(r'^articles/(?P<uid>[-\w]+)/comments/$', comments_views.CommentList.as_view()),
相关视图如下所示:
class CommentList(generics.ListAPIView):
serializer_class = CommentSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
lookup_field = "uid"
def get_queryset(self):
comments = Comment.objects.filter(article= ???)
return comments
有关信息,相关的序列化程序
class CommentSerializer(serializers.ModelSerializer):
owner = UserSerializer()
class Meta:
model = Comment
fields = ('id', 'content', 'owner', 'created_at')
如您所见,我已更新我的 get_queryset 以过滤文章中的 cmets,但我不知道如何捕获“uid”参数。 以 ?uid=value 结尾的 url,我可以使用 self.request.QUERY_PARAMS.get('uid') 但在我的情况下,我不知道该怎么做。 有什么想法吗?
【问题讨论】:
【参考方案1】:url参数存储在self.kwargs
中。 lookup_field
是通用视图在查找单个模型实例时在 ORM 中使用的字段(默认为 pk),lookup_url_kwarg
可能是您想要的属性。
所以尝试以下方法:
class CommentList(generics.ListAPIView):
serializer_class = CommentSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
lookup_url_kwarg = "uid"
def get_queryset(self):
uid = self.kwargs.get(self.lookup_url_kwarg)
comments = Comment.objects.filter(article=uid)
return comments
【讨论】:
谢谢!!我尝试构建自定义 mixins(django-rest-framework.org/api-guide/…)但未成功,但您的解决方案工作正常。 :) 您可能想探索这个库,它采用query params
并以优雅的方式在queryset
上放置过滤器。 github.com/manjitkumar/drf-url-filters
嘿@Scott Woodall,我遇到了类似的问题,现在我解决了。我现在关心的是,这lookup_url_kwarg
是必须的吗?如果我有多个参数怎么办?例如uid
、some_thing_else
?这样做可以comments = Comment.objects.filter(article=self.kwargs.get('uid'))
吗?在 django-rest-framework 中,是不是可以同时使用 oauth 和 session 身份验证?
】在django-rest-framework中,是不是可以同时使用oauth和session身份验证?【英文标题】:Indjango-rest-framework,isitpossibletouseoauthandsessionauthenticationsimultaneously?在django-rest-framework中,是否可以同时使用oauth和session身份验证?【发布时间】... 查看详情
如何在 React 中显示来自 django-rest-framework 的错误消息
】如何在React中显示来自django-rest-framework的错误消息【英文标题】:Howtodisplayerrormessagesfromdjango-rest-frameworkinReact【发布时间】:2019-12-2910:24:11【问题描述】:我正在尝试使用Django休息框架和反应,redux来实现用户注册表单。我能... 查看详情
在带有 django-rest-framework 的过滤器中使用自定义方法
】在带有django-rest-framework的过滤器中使用自定义方法【英文标题】:Usingcustommethodsinfilterwithdjango-rest-framework【发布时间】:2014-08-1609:15:30【问题描述】:我想在我的RESTAPI-seedjangodocsonthis中过滤查询参数。但是,我希望过滤的一个... 查看详情
django-rest-framework 序列化器在多个视图中的不同字段
】django-rest-framework序列化器在多个视图中的不同字段【英文标题】:django-rest-frameworkserializerdifferentfieldsinmultipleviews【发布时间】:2017-10-1904:56:32【问题描述】:我是Django的新手,找不到解决问题的方法。问题是在使用不同视图... 查看详情
django-rest-framework 覆盖创建函数在 ModelSerializer 上不起作用
】django-rest-framework覆盖创建函数在ModelSerializer上不起作用【英文标题】:django-rest-frameworkOverridingcreatefunctionnotworkingonModelSerializer【发布时间】:2020-02-0221:41:52【问题描述】:我只想将新数据插入到我的数据库中。如果具有相同主... 查看详情
django-rest-framework - 在可浏览的 API 中自动生成表单?
】django-rest-framework-在可浏览的API中自动生成表单?【英文标题】:django-rest-framework-autogenerateforminbrowsableAPI?【发布时间】:2013-01-1500:08:22【问题描述】:不确定我是否使用了正确的词汇。在django-rest-framework免费提供的可浏览api中... 查看详情
在 HTML 页面或模板中使用 Django-REST-Framework 从在 Django 中创建的 API 获取/显示 API 数据
】在HTML页面或模板中使用Django-REST-Framework从在Django中创建的API获取/显示API数据【英文标题】:Get/DisplayAPIdataatfrontendfromanAPIcreatedinDjangousingDjango-REST-FrameworkinanHTMLpageorTemplate【发布时间】:2019-12-2715:11:36【问题描述】:我使用Django... 查看详情
django-rest-framework: api 版本控制
】django-rest-framework:api版本控制【英文标题】:django-rest-framework:apiversioning【发布时间】:2012-12-2512:52:55【问题描述】:谷歌搜索似乎普遍认为,在RESTURI中嵌入版本号是一种不好的做法和一个坏主意。即使在SO上,也有强烈的支持... 查看详情
现有版本中 django 的 Tastypie 或 django-rest-framework [关闭]
】现有版本中django的Tastypie或django-rest-framework[关闭]【英文标题】:Tastypieordjango-rest-frameworkfordjangoinexistingversions[closed]【发布时间】:2012-09-0405:47:23【问题描述】:前段时间它们确实很棒,有类似的主题证明了这一点,但是我们... 查看详情
将 django-rest-framework 中的超链接添加到 ModelViewSet
】将django-rest-framework中的超链接添加到ModelViewSet【英文标题】:AddaHyperLinkindjango-rest-frameworktoaModelViewSet【发布时间】:2015-11-0802:49:30【问题描述】:在DjangoRestFramework中是否可以在链接到详细视图的ModelViewSet列表视图中每条记录... 查看详情
断言错误:Django-rest-Framework
】断言错误:Django-rest-Framework【英文标题】:Assertionerrorat:Django-rest-Framework【发布时间】:2015-02-1313:36:02【问题描述】:我正在使用python3.4、Django1.7.1(书中考虑的版本)、Postgres9.3,我的IDE是Eclipse。我一直在研究“轻量级Django-E... 查看详情
django-rest-framework 和 swagger api 文档
】django-rest-framework和swaggerapi文档【英文标题】:django-rest-frameworkandswaggerapidocumentation【发布时间】:2014-06-0504:47:24【问题描述】:我查看了django-rest-swagger项目,我想用它来为我的项目记录api。但是如何做到这一点存在一些问题... 查看详情
如何在 django-rest-framework 中为 API 使用 TokenAuthentication
】如何在django-rest-framework中为API使用TokenAuthentication【英文标题】:HowtouseTokenAuthenticationforAPIindjango-rest-framework【发布时间】:2013-07-0718:26:11【问题描述】:我有一个django项目,使用django-rest-framework来创建api。想要使用基于令牌的... 查看详情
在视图集中创建的 Django-rest-framework 权限
】在视图集中创建的Django-rest-framework权限【英文标题】:Django-rest-frameworkpermissionsforcreateinviewset【发布时间】:2014-05-1017:03:02【问题描述】:我正在尝试创建一个RESTAPI并且卡在用户注册上:基本上我需要在注册之前获得访问令牌... 查看详情
如何在 django-rest-framework 中对权限进行单元测试?
】如何在django-rest-framework中对权限进行单元测试?【英文标题】:Howtounittestpermissionsindjango-rest-framework?【发布时间】:2016-09-0708:14:14【问题描述】:她的权限是我想要进行单元测试的示例权限。#permissions.pyfrommyapp.modelsimportMembersh... 查看详情
如何使用 TemplateHTMLRenderer 在 Django-REST-Framework 中创建/放置?
】如何使用TemplateHTMLRenderer在Django-REST-Framework中创建/放置?【英文标题】:HowdoIuseTemplateHTMLRendererforCreate/PutinDjango-REST-Framework?【发布时间】:2019-04-1512:45:20【问题描述】:我很难找到正确的方法来初始化TemplateHTMLRenderer以呈现用... 查看详情
如何处理 django-rest-framework 中 url 模式中的外键关系
】如何处理django-rest-framework中url模式中的外键关系【英文标题】:HowdoIhandleforeignkeyrelationshipintheurlpatterninthedjango-rest-framwork【发布时间】:2022-01-0120:08:15【问题描述】:在我的models.py我有以下类:classProject(models.Model):name=models.Char... 查看详情
Django-rest-framework 中的全局异常处理
】Django-rest-framework中的全局异常处理【英文标题】:GlobalExceptionHandlinginDjango-rest-framework【发布时间】:2020-06-1101:34:42【问题描述】:有没有办法在不使用djangorest框架中的try-except块的情况下全局处理所有异常。我想将django抛出的... 查看详情