我正在设置Django / Django Rest Framework API,大多数查询都是使用url中的参数生成的。该模式遵循{param name}/{param value}
。
例如:
users/
users/id/{id}/
users/name/{name}/
users/group/{group}/name/{name}/
users/group/{group}/email/{email}/
使用正则表达式解析参数,并将其发送到查看方法,如教程中所示。这三者中的每一个都有一个单独的视图方法。
我很好奇是否有办法编写一个可以捕获所有这些参数的视图方法,无论它们的显示顺序如何。例如:
users/id/{id}/
users/group/{group}/
users/name/{name}/
users/email/{email}/
users/email/{email}/group/{group}
是否会转到一个过滤用户模型/表的视图方法。是否有可能编写一个简洁的正则表达式/ url解析器,而不必编写覆盖所有可能迭代的url模式匹配?
答案 0 :(得分:1)
我建议改用查询字符串。
查询:/users/?email=user@example.com&name=Doge
然后在你的观点中:
email = self.request.query_params.get('email', None)
name = self.request.query_params.get('name', None)
您的网址格式如下:
r'^/users/$'
或者你可以这样做:
r'^/users/{paramtype}/{param}/({subparamtype}/{subparam})?$'
但是你必须检查你视图中的所有情况:
if paramtype == 'id': # query on id in param
elif paramtype == 'email' # query on email in param
elif ...