如何从url获取**kwargs网址.py设置?

2024-09-24 22:29:56 发布

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

我正在Django构建一个RESTful API。你知道吗

一个API有6个参数,它们都有默认值。基本上我要用户通过0到6对参数和视图函数使用默认的rest。参数是无序的

例如:

/month/6/date/12/    # for June 12
/year/2012/month/6/  # for June, 2012 
/date/12/year/2012/  # for 12 in every month in 2012

我希望这能奏效,但不行

# in urls.py
url(r'(?:([a-zA-Z]+)/(\d+)/)*','kwargs.views.aview')

# in views.py
def aview(request,*args):
    # even in args are keys and odd are values 
    return HttpResponse(args)

在这一刻,我脑子里只有一个丑陋的解决方案:

   # in urls.py
url(r'([\w/]*)','kwargs.views.aview')

# in views.py
def aview(request,args):
    args = args.split('/')
    # even in args are keys and odd are values 
    return HttpResponse(args)

有什么办法吗


Tags: inpyapiurlfor参数dateargs
1条回答
网友
1楼 · 发布于 2024-09-24 22:29:56

在第一个正则表达式中,实际上只有两个组,它们一直被覆盖。我建议一个不那么难看的解决方案,通过在正则表达式中检查url的正确性,但只在一个完整的组中进行检查,并将单个参数拆分并转换为dict:

url(r'((?:(?:[a-zA-Z]+)/(?:\d+)/)*)','kwargs.views.aview')

def aview(request,args):
    args = dict(zip(*[iter(args.split('/'))]*2))
    return HttpResponse(args)

编辑:使用正确的reg-exp

相关问题 更多 >