2015-11-05 2 views
2

Возможно ли определить Django urlpattern, который получит любое количество параметров одного и того же типа и передаст их в представление?Django urlpattern с бесконечным числом параметров

Допустим, я хочу создать страницу, которая получает список чисел из url и суммирует их. Так что это было бы справедливо URLs:

/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'). Какое правильное регулярное выражение получает все числа, переданные в представлении?

+1

Почему вы не проходите параметры в формате GET? -> '/ sum /? nums = [1,2,3,4,5,6,7]' – Gocht

ответ

4

Вы можете записать один аргумент, например. '1/2/3/4/5/6/7/8/9/'

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

Раскол список в представлении.

def sum_view(request, numbers): 
    processed_numbers = [int(x) for x in number.split('/') if x] 
    ... 
1

urlpatterns Django основаны на регулярных выражениях в Python, так что нет никакого способа ловли всех данных от повторения группы. Проверьте это question.

Вам придется разделить и обработать их самостоятельно (например, @Alasdair предлагает).