Я взломал образец и, если комментарий Лазерона не сделал этого для вас, вот что я придумал:
url(r'^(?P<param1>foo|bar)(/(?P<param2>\d+))?(/(?P<param3>\d+))?(/(?P<param4>\d+))?/$', 'demo.views.view'),
И мой взгляд выглядел так:
def view(request, *args, **kwargs):
return render_to_response("index.html",
{ 'dict': [(k, v) for k,v in kwargs.iteritems()] },
context_instance=RequestContext(request))
Он постепенно добавлял параметры по мере добавления в URL слева направо, как и следовало ожидать.