Python DRF中的几个查询参数URL
无法构造包含3个参数的URL。 在web中未找到任何适当的现有示例 路由器.pyPython DRF中的几个查询参数URL,python,django,django-rest-framework,query-string,query-parameters,Python,Django,Django Rest Framework,Query String,Query Parameters,无法构造包含3个参数的URL。 在web中未找到任何适当的现有示例 路由器.py router = routers.SimpleRouter() router.register(r'reservation(?P<param1>)', ReservationViewSet, 'reservation') router=routers.SimpleRouter() 路由器寄存器(r'reservation(?'P'),ReservationViewSet,'reservation')
router = routers.SimpleRouter()
router.register(r'reservation(?P<param1>)', ReservationViewSet, 'reservation')
router=routers.SimpleRouter()
路由器寄存器(r'reservation(?'P'),ReservationViewSet,'reservation')
这只适用于一个参数。
添加两个以上参数以解析URL的正确语法是什么:
?
谢谢 简而言之,我建议您选择一种或另一种方式,不要将GET参数与URL结构混合使用 获取参数 如果您使用的是这样的
/api/general/reservation?enterprise=4&start=01-01-2015&end=01-31-2016
,您的URI可以这样写:路径[?查询]
,路径为/api/general/reservation
,查询为?enterprise=4&start=01-01-2015&end=01-31-2016
,这是可选的,位于路径之后
要获取这些参数,您需要从请求中读取它们的值,例如,enterprise=request.get['enterprise']
因此,如果您想在视图集中保留该结构,只需在视图方法中读取这些参数即可
def do_something(request):
# read the params first
enterprise = request.GET['enterprise']
...
# do something with those values
要使用此方案并匹配您的路径,只需按如下方式进行路由
router.register(r'reservation', ReservationViewSet, 'reservation')
(对于r'reservation(?p)
,不需要进行任何更改,查询不是路径的一部分,因此不包括它)
URL匹配中的参数
否则,如果您试图直接从URL解析这些内容,例如使用URL正则表达式,那么您需要一个更像这样的表单/api/general/reservation/4/01-01-2015/01-31-2016
,以匹配此结构的内容reservation/(?p)/(?p)/(?p)
然后您的视图方法将类似于
def do_something(request, enterprise, start, end):
# do something with those values
你说的“三个参数”是什么意思<代码>api、
常规
和保留
或企业
、开始
和结束
?企业、开始和结束我正在从请求中读取值。在我有一个参数之前,一切都正常。我无法将router.py配置为使用3个参数解析URL。如果您想使用GET参数,只需router.register(r'reservation',ReservationViewSet)
就足够了,无需在URL结构中指定参数,非常感谢!这个评论解决了我的问题。作为你最后的评论,我们该如何回答我的问题?(理解我的问题不清楚)bakkal,再次感谢你回答我的问题,你帮了我很多。