Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DRF中的几个查询参数URL_Python_Django_Django Rest Framework_Query String_Query Parameters - Fatal编程技术网

Python DRF中的几个查询参数URL

Python 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')

无法构造包含3个参数的URL。 在web中未找到任何适当的现有示例

路由器.py

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,再次感谢你回答我的问题,你帮了我很多。