使用 APIView 接收参数

Posted

技术标签:

【中文标题】使用 APIView 接收参数【英文标题】:Receiving parameters with APIView 【发布时间】:2017-11-06 12:18:14 【问题描述】:

我有这个路由:

   url(r'^article/(?P<article_id>\d+)/', views.ArticleList.as_view())

这导致了这个功能:

class RSSList(APIView):
    def get(self, request, *args, **kwargs):
        article_id = kwargs.get('article_id')

但是当我尝试查询 /article/34 之类的内容时

我收到此错误:

TypeError: get() got an unexpected keyword argument 'article_id'

如何将 article_id 传递给 get()?

谢谢

【问题讨论】:

RSSList 不是问题,您在其他地方缺少*args, **kwargs。也许在ArticleList 而不是RSSList 您在路由中使用ArticleList 类!但是你在 RSSList 类中获取 article_id 而不是! 【参考方案1】:

你也可以这样:

def get(self, request, article_id):
   print(article_id) #for >3.2
   print article_id # for 2.7

如果你想让它成为可选的:

def get(self, request, article_id=None):

【讨论】:

以及如何注册这个可选参数?

以上是关于使用 APIView 接收参数的主要内容,如果未能解决你的问题,请参考以下文章

python Django Rest_Framework框架 APIView介绍与序列化器详解(图文并茂版)

9、Django视图(View与APIView)

APIView的使用

从 Django REST Framework 中的 APIView 中获取完整的请求 URL

APIView

在 Django Rest Framework 中使用 APIView 和 viewset 设置路由器