如何使用django在AJAX(rest-api)中发送参数?

时间:2013-12-13 20:59:55

标签: django-rest-framework

我在django的实用程序rest-api, 我没有成功通过ajax发送“GET”参数:

在django的rest-api应用程序中,我有urls.py:

urlpatterns = patterns('',
    url(r'^titles/(?P<author_id>\d+)/$', login_required(views.TitlesViewSet.as_view()) ),
)

在views.py中我写道:

class TitlesViewSetViewSet(ListCreateAPIView):
     serializer_class = TitleSerializer

     def get_queryset(self):
         aouther_id = self.request.GET.get('aouther_id', None)
         return Title.objects.filter(auther = auther_id)

当代码插入上面的get_queryset时,它无法识别任何GET参数,并且aouther_id设置为None。

有人知道我应该做什么吗?

2 个答案:

答案 0 :(得分:2)

首先,您在网址中输入了一个拼写错误,您正在使用author_id,并且您正在尝试获取aouther_id密钥。其次,您试图从查询参数中获取值,但实际上并未使用它们。第三,您正在使用命名的url参数,这些参数存储在基于类的视图的kwargs属性中。

您可以通过以下方式访问它们:

class TitlesViewSetViewSet(ListCreateAPIView):
    serializer_class = TitleSerializer

    def get_queryset(self):
        # try printing self.kwargs here, to see the contents
        return Title.objects.filter(author_id=self.kwargs.get('author_id'))

答案 1 :(得分:1)

你应该将auther_id设置的一行替换为:

auther_id=self.kwargs['auther_id']

更新: 我现在看到jbub回答...谢谢你!我刚发现它......