Регулярное выражение всегда будет соответствовать одной подстроке, а не нескольким строковым частям, поэтому вы не сможете получить список вместо одного совпадения.
Вы должны разобрать слова вручную:
urlpatterns = patterns('',
(r'^(?P<words>\w+(/\w+)*)/$', myView),
)
def myView(request, words):
# The URL path /a/b/ will give you the output [u'a', u'b']
return HttpResponse(str(words.split("/")))
В зависимости от вашего варианта использования каждое слово может иметь фиксированное значение, например дату или категорию продукта. Тогда вы можете сделать некоторые из них необязательными, например, так:
urlpatterns = patterns('',
(r'^(?P<year>\d\d\d\d)/((?P<month>\d\d)/((?P<day>\d\d)/)?)?$', myView),
)
def myView(request, year, month, day):
# URL path /2010/ will output year=2010 month=None day=None
# URL path /2010/01/ will output year=2010 month=01 day=None
# URL path /2010/01/01/ will output year=2010 month=01 day=01
return HttpResponse("year=%s month=%s day=%s" % (year, month, day))