DRF中几个查询参数URL

2024-10-08 23:19:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在路由器.py在

router = routers.SimpleRouter()
router.register(r'reservation(?P<param1>)', ReservationViewSet, 'reservation')

这只适用于一个参数。 再添加两个参数来解析URL的正确语法是什么:

http://127.0.0.1:8000/api/general/reservation?enterprise=4&start=01-01-2015&end=01-31-2016

是吗?在

谢谢!在


Tags: pyregisterwebhttpurl示例参数语法
1条回答
网友
1楼 · 发布于 2024-10-08 23:19:54

简而言之,我建议您选择一种或另一种方式,不要将GET参数与URL结构混合使用。在

获取参数

如果您使用的是这样的URI,那么您的URI可以这样写:path[?query],路径是/api/general/reservation,查询是{},这是可选的,位于路径之后。在

要获得这些参数,您需要从请求中读取它们的值,例如enterprise = request.GET['enterprise']

所以如果你想在你的视图集中保留这个结构,只需读取你的视图方法的参数

def do_something(request):
    # read the params first
    enterprise = request.GET['enterprise']
    ...
    # do something with those values

要使用这个方案并匹配您的路径只需如下所示

^{pr2}$

(对于r'reservation(?P<param>)',查询不是路径的一部分,因此不包括它)

URL匹配中的参数

否则,如果您试图直接从URL解析这些内容,例如使用URL regex,那么您需要一个类似于/api/general/reservation/4/01-01-2015/01-31-2016的形式来匹配这种结构的东西reservation/(?P<enterprise>)/(?P<start>)/(?P<end>)

然后你的视图方法看起来像

def do_something(request, enterprise, start, end):
    # do something with those values

相关问题 更多 >

    热门问题