Django urlpattern具有无限多个参数

时间:2015-11-05 21:33:21

标签: python django python-3.x url-pattern

是否可以定义Django urlpattern,它会获得任意数量的相同类型参数并将它们传递给视图?

让我们说我想创建一个页面,从url获取一个数字列表并对它们求和。所以这些都是有效的网址:

/sum/10/99/12/
/sum/1/2/3/4/5/6/7/8/9/
/sum/3/

我猜这个观点看起来像这样:

def sum_view(request, *args):
    return render(request, 'sum.html', {'result': sum(args)})

问题是urlpattern应该怎么样?也许是这样的:

url(r'^sum/((\d+)/)+$', views.sum_view)

但是这种方式只能重复最后一次重复两次:args == ('1/', '1')。什么是正确的正则表达式来获取视图中传递的所有数字?

2 个答案:

答案 0 :(得分:4)

你可以捕获一个参数,例如function blah() { var alternativeAptTimeBit = document.getElementById('alternativeAptTime'); /* var alternativeAptDateBit = document.getElementById('alternativeAptDate'); var alternativeAptDoctorBit = document.getElementById('alternativeAptDoctor');*/ var table = document.getElementById("tbl-appointment-requests"); var rows = table.rows; for (var i = 0; i < rows.length; i++) { if (alternativeAptTimeBit.innerHTML === "0") { alternativeAptTimeBit.className="glyphicon glyphicon-remove"; alternativeAptTimeBit.innerHTML = null; } else { alternativeAptTimeBit.className="glyphicon glyphicon-ok"; alternativeAptTimeBit.innerHTML = null; } }

'1/2/3/4/5/6/7/8/9/'

在视图中拆分列表。

url(r'^sum/(?P<numbers>[\d/]+)$', views.sum_view)

答案 1 :(得分:1)

Django的urlpatterns基于python的regexp,因此无法从重复组中捕获所有数据。请查看此question以获取解释。

你必须自己拆分和处理它们(比如@Alasdair建议)。