是否有可能使django-rest-framework url模式以非特定顺序采用params?

时间:2016-03-22 16:50:35

标签: django rest django-rest-framework

我正在寻找在我正在制作的IP管理网络广告中添加其他API的方法。我希望API能够使用有关网络的信息来响应多参数查询,而不管参数的顺序如何。我想要:

ipmanager.com/api/customer_id/54331/network_category/iscsi

返回相同的内容:

ipmanager.com/api/network_category/iscsi/customer_id/54331

但到目前为止,我还没有找到关于如何使api位置的参数不可知的文档。有可能吗?

2 个答案:

答案 0 :(得分:2)

由于您在urls.py中指定了参数,因此无法实现。但也许你可以用不同的方式尝试。

ipmanager.com/api/?network_category=iscsi&customer_id=54331
在你的get_queryset方法中,尝试获取这样的参数。

network_category = request.query_params.get('network_category', None)
customer_id = request.query_params.get('customer_id', None)

在您的urls.py文件中,将其添加到您的网址格式:

url(r'^api/get_customer', views.get_customer, name='get customer'),

问题是,您不必在urls.py中指定任何内容。您只需提供参数并将其提取到视图中即可。

我通常会选择一个参数,所以我不确定这会有用,但试一试,请告诉我。

另外,不要忘记在urls.py中更改您的网址。如果您不确定该怎么做,我可以提供帮助。

答案 1 :(得分:0)

不,这是不可能的。您需要定义多个URL以指向同一视图。